2017-01-13 2 views
0

Ich habe ein sehr seltsames Problem mit dem nativen Navigator reagieren.Native Navigator didfocus Ereignis-Listener reagieren

Ich habe eine ScrollableTabView, die mehrere Navigatoren hat, auf einigen Szenen eines bestimmten Navigators möchte ich die untere Navigation ausblenden.

Ich versuchte, das onFocus Ereignis für Navigator mit Hilfe der aktuellen Szene Details zu bekommen, stellte sich heraus, es veraltet wurde (obwohl es auf xCode und Android Simulatoren gut funktioniert, aber es funktioniert nicht, wenn ich die App freigeben.)

Mein zweiter Versuch war den didfocus Ereignis-Listener auf dem übergeordneten Stapel componentDidMount wie unten anbringt:

this.refs.stackNavigator.navigationContext.addListener('didfocus',(event) => { // Some code here calling an action }); 

Aber auch, wie ich irgendwo jemand sagt gefunden hat nicht funktioniert, dass die Zuhörer Anbringen vor dem Rendern sollte die Navigator und schlug vor, die Liste anzuhängen Ener auf die renderScene Funktion des Navigators. (auch alles funktioniert gut auf Simulatoren, aber nicht auf veröffentlichte Anwendungen.)

Mein dritter Versuch war tatsächlich tun, dass die renderScene-Methode und auch gleiche Ergebnis wie die beiden oben genannten Versuche, alle Arbeiten an Simulatoren in Ordnung, aber In der Veröffentlichung funktioniert nichts. (Auch funktioniert alles auf Simulatoren, aber nicht auf freigegebenen Anwendungen.)

Jede Hilfe oder wenn jemand solches Verhalten begegnet, würde ich sehr seine Rückmeldung schätzen.

Danke Gemeinde!

Antwort

0

Verwenden Sie react-native-scrollable-tab-view? Sie können onChangeTab verwenden:

<ScrollableTabView onChangeTab={this.onChangeTab} /> 

und ich bin mir ziemlich sicher, dass Sie die Methode wie folgt angegeben werden:

onChangeTab({i, ref, from }) { 
    this.children[i].onFocus(); 
} 

Sie haben jede Registerkarte setzen mit einem ref={(ref) => (this.children[i] = ref)} wo i ist der Index der Tab. Jetzt können Sie eine onFocus() -Methode in Ihrem Tab erstellen und sie aufrufen, wenn diese Registerkarte ausgewählt ist.

+0

Ich glaube, dass Sie auch eine 'i = {i}' Stütze an jede Registerkarte übergeben müssen. Wo "i" ist der Index der Registerkarte. –

+0

Danke für Ihre Antwort Matt. Ja, ich benutze 'reactive-native-scrollable-tab-view', aber in jeder Registerkarte gibt es einen Navigator. ' ' Mein Problem ist in diesem Kind-Navigator auf der Registerkarte Ebene nicht. Bei bestimmten Szenen im ersten Navigator möchte ich die untere Navigation ausblenden. Ich bin mir nicht sicher, ob dein Weg helfen würde. Du denkst? –

Verwandte Themen