2017-07-22 3 views
1

Ich habe eine Reaktionskomponente, die ich in einen Mobx-Speicher injiziere. Wenn ich in einer Lebenszyklusmethode (componentWillMount oder componentDidMOunt) auf eine Observable von meinem Store aus zugreifen möchte, ist der Wert leer. Wenn ich jedoch innerhalb der Rendermethode darauf zugreife, ist sie verfügbar. Gibt es etwas, das mir fehlt? Ich fühle mich, als würde ich hier etwas Grundlegendes vermissen.Mobx Store nicht innerhalb Lifecycle-Methoden zugänglich?

+0

Mein Verständnis: mobx für Änderungen von Observablen zugegriffen beobachten wird innerhalb Methode zu machen, und wenn die Wertänderungen führen machen. Obwohl der Wert von Observable in den Lebenszyklusmethoden verfügbar ist, wird nicht auf Änderungen in diesen Observablen geachtet, sodass das Rendern bei Wertänderungen nicht stattfindet. – vijayst

+0

Ja. Das macht Sinn. Ich denke, ich setze einen neuen Wert auf den Baum ein wenig und meine Kind-Komponente wurde bereits gerendert, bevor mein Wert gesetzt wird. Ich werde das ein bisschen mehr erforschen. – archae0pteryx

+0

verwendest du die mobx-react Bindungen? siehe https://github.com/mobxjs/mobx-react –

Antwort

1

The documentation eindeutig besagt, dass observer von mobx-react Observablen nur in Render-Methode der umhüllten Komponente verfolgt.

Funktion (und Dekorateur), die eine Komponente Definition React umwandelt, Reagieren Komponentenklasse oder Standalone-Render-Funktion in eine reaktive Komponente, die durch Rendern welche Observablen Spuren verwendet und automatisch neu machen die Komponente wenn einer dieser Werte ändert.

Wenn Sie einen Blick auf observer sources nehmen können Sie bestätigen, dass es nur Spuren Methode machen