2017-11-29 3 views
0

Ich habe eine React/Redux-Anwendung mit zwei Komponenten. Ich muss einen Teil des Redux-Status löschen, wenn die erste Komponente unmounts, weil die zweite Komponente Fehler mit dem Zustand in dieser Form wird. Ich habe versucht, eine Aktion auszulösen, die das Stück des Zustands löscht, wenn die erste Komponente unmounts, aber die zweite Komponente beginnt, zu mounten, bevor die erste Komponente Methode aufgerufen wird. Wenn ich ausgeführte Aktionen im Redux-Logger anzeigen lasse, sehe ich, wie die zweite Komponente Aktionen von componentWillMount und dann Aktionen von der vorherigen aufgerufenen Komponente sendet.Warum wird componentWillUnmount nach den nächsten Komponenten componentWillMount ausgelöst?

Dies ist nicht das erwartete Verhalten, oder? Ich benutze auch react-router v4. Vielen Dank!

+1

'Vermeiden Sie die Einführung von Nebenwirkungen oder Subskriptionen in dieser Methode. Verwenden Sie für diese Anwendungsfälle stattdessen componentDidMount(). Https://reactjs.org/docs/react-component.html#componentwillmount – sissonb

+0

Dito zur Verwendung von 'didUpdate()' anstelle von 'willMount()'. Auch bei der Frage kann es hilfreich sein, wenn Sie sagen, was Sie damit erreichen wollen und warum. Warum stürzt die zweite Komponente ab? Kannst du nicht einfach diesen Teil des Staates passieren? – cfraser

+0

@sissonb danke für deine Antwort, aber das hat nicht geholfen. Nachdem ich die zweite Komponente so geändert habe, dass sie componentDidMount anstelle von componentWillMount verwendet, sehe ich noch die zweite Komponente in componentWillMount, bevor die ersten componentsWillUnmount Aktionen ausgelöst werden. – withintheruins14

Antwort

0

Since React v16, der Haken kann asynchron zünden.

Dies bedeutet, dass Sie keine Annahmen über die Reihenfolge (oder Timings) der Aufrufe dieser hooks Cross-Komponente machen können.

Verwandte Themen