2017-02-15 3 views
0

Ich feuere eine Aktion ab, wenn ich den aktuellen Standort des Benutzers erhalte, um Marker an diesem Ort zu finden. Ich bekomme die Daten, aktualisiere meinen Reducer.Redux - Reducer wurde erfolgreich aktualisiert, aber die Komponente componentWillReceiveProps der verbundenen Komponente zeigt immer noch den alten Zustand

Allerdings, wenn ich console.log(this.props) in meinem componentWillReceiveProps, sehe ich immer noch den alten Zustand. Wenn ich zu einer anderen Route navigiere und dann zurückkomme, kann ich die aktualisierten Requisiten im Konsolenprotokoll von componentWillReceiveProps sehen.

UPDATE: Dies lag an mangelndem Verständnis für den Komponentenlebenszyklus. Schau dir die Antwort unten an :).

+0

Können Sie auch bitte zeigen Sie den Inhalt von 'receivedNearbyMapMarkers' – Samo

+0

@samo sicher! oben aktualisiert. thx – user1354934

+0

Danke. Kannst du auch zeigen, wo 'getNearbyMapMarkers' /' setCurrentPosition' aufgerufen wird? – Samo

Antwort

2

Das ist das beabsichtigte Verhalten! Diese Funktion wird aufgerufen, bevor die Komponente neu gerendert wird, sodass Sie den alten Zustand mit dem aktuellen Status vergleichen können.

Der Reducer aktualisiert den Zustandsbaum, der der verbundenen Komponente die Neuausgabe mitteilt, und an diesem Punkt sollte this.props den alten Zustand der Komponente anzeigen.

Nach der console.log wird die Komponente weiterhin neu gerendert, sofern nicht anders angegeben, weshalb, wenn Sie zurück navigieren, Sie die "neuen Requisiten" sehen.

Die Werte, die durch componentWillReceiveProps übergeben werden, sind die nächsten Requisiten.

Ihr Lifecycle-Code ist im Wesentlichen sagen:

  1. Sag mir meine alte Requisiten (vor dem Anschluss mich rerender machen)
  2. Wenn kein geladen Skript war, und jetzt, nach dem Druckminderer, dort ist: a. Wenn das Laden des Skripts erfolgreich war, setzen Sie die Kartenoptionen zurück und reinitialisieren Sie b. Wenn das Skript Last fehlgeschlagen ist, melden Sie sich ein Fehler an stdout

Die doc auf den Lebenszyklus ziemlich ausgezeichnet sind und here

gefunden werden Wenn das nicht aus, helfen, wo ist das beabsichtigte Verhalten der Komponente Fehlzündung?

+0

Danke. Lesen Sie einfach die Dokumentation. Ich bin jedoch immer noch verwirrt. Wenn ich auf die Requisiten reagieren muss, die ich nach meinen Redux-Status-Updates erhalte, welche Lebenszyklus-Komponente sollte dann verwendet werden? Muss ich nach dem Rendern eine Lifecycle-Methode verwenden? – user1354934

+0

Ok, ich habe es mit componentWillUpdate herausgefunden :) – user1354934

Verwandte Themen