2016-03-23 11 views
4

Ich versuche, eine Funktion auszulösen, wann immer eine bestimmte Route innerhalb eines Routers lädt. Ich verwende react-native-router-flux 2.x und ReactNative 0.21 (kann momentan nicht auf 3.x aktualisiert werden).reactive-native-router-flux - trigger-Funktion auf spezifische Route load

Zum Beispiel unten möchte ich nur eine Funktion auslösen, wenn screen2 geladen ist. Ist das möglich? Ich habe versucht mit onPush, aber es schien nicht zu funktionieren.

Der Grund, warum ich das brauche, ist, weil ich componentDidMount, componentWillMount für die screen2-Komponente nicht verwenden kann, da es nur beim ersten Aufruf der Komponente geladen wird. Ich brauche eine Funktion, um jedes Mal auszulösen, wenn die Route ausgewählt wird. Vielen Dank!

<Route name="screen1" initial={!needSignIn}> 
    <Router footer={TabBar} hideNavBar={true} > 
     <Route name="screen1" hideNavBar={true} title="Screen1" schema="tab" component={Screen1} /> 
     <Route onPush={()=>{console.log("onPush is called!");}} name="screen2" hideNavBar={true} title="Screen2" schema="tab" component={Screen2} /> 
     <Route name="screen3" hideNavBar={true} title="Screen2" schema="tab" component={Screen3} /> 
    </Router> 
    </Route> 

Antwort

2

Die einzigen Ereignisse, die see documentation Ereignisse reagieren mit-native-Router-Fluss sind onLeft und onRight abfeuern kann. Die einzigen Funktionen, die ausgelöst werden können, sind Lebenszyklusfunktionen. Du hast gesagt, dass die Komponente (Did/Will) Mount nicht funktioniert, was ist mit den anderen, wie componentWillReceiveProps? Verwenden Sie componentWillMount für das erste Rendering und componentWillReceiveProps für jedes andere Rendering.

+0

Danke für die Antwort, OnLeft und OnRight wird leider nicht helfen, da die Route, die ich triggere, eine Registerkarte in einer Tab-Leiste ist. Lifecycle-Funktionen sind eine gute Idee, aber ich stelle fest, dass componentWillReceiveProps und componentDidUpdate ausgelöst werden, wenn ich mich von der betreffenden Route entferne, bei einer "AFTER_ROUTER_FOCUS" -Aktion? Es scheint keine Lifecycle-Funktion zu geben, an die ich mich klammern kann, wenn ich auf den Tab klicke. –

+0

Welche Art von Arbeit müssen Sie in Ihrer Funktion ausführen? Wenn es sich um einen api-Anruf handelt, können Sie den Anruf zuerst tätigen, bevor Sie zu der anderen Route wechseln und diese dann als Requisite übergeben. –

+0

Wenn Sie das nicht tun können, dann schauen Sie sich die [Standard-Aktionen vom Router ausgelöst] (https://github.com/aksonov/react-native-router-flux/blob/master/src/Actions.js) –

Verwandte Themen