0

Ich benutze react-native-Router-flux und habe ein Problem, zwischen den Szenen navigieren und es macht mich verrückt!Native Router Flux reagieren - Navigieren zu Szene und zurück - Konflikte mit einem anderen Kind

Das ist mein Router:

<Router navigationBarStyle={styles.navigationBody} titleStyle={styles.navigationTitle} duration={0} > 
    <Scene key="root"> 
     <Scene key="addNode" component={HA_AddNode} socket={socket} rooms={["Living Room", "Master Bedroom", "Hall", "Office"]} nodes ={["Light Switch", "Socket"]} title="Add Node" backTitle="Back" backButtonTextStyle={{color: 'white'}} backButtonImage={require('./images/back_arrow_icon.png')} onLeft={()=> Actions.pop()} /> 
     <Scene key="addRoom" component={HA_AddRoom} socket={socket} locations={["Downstairs", "Upstairs"]} title="Add Room" backTitle="Back" backButtonTextStyle={{color: 'white'}} backButtonImage={require('./images/back_arrow_icon.png')} onLeft={()=> Actions.pop()} /> 
     <Scene key="tabBar" tabs style={styles.tabBar} initial={true}> 
     <Scene key='dashboard' component={HA_Dashboard} title='Dashboard' initial={true} icon={HA_TabIcon} iconTitle="ios-home-outline" /> 
     <Scene key='rooms' component={HA_Rooms} title='Rooms' icon={HA_TabIcon} iconTitle="ios-list-box-outline" /> 
     <Scene key='settings' component={HA_Settings} title='Settings' icon={HA_TabIcon} iconTitle="ios-settings-outline" /> 
     </Scene> 
    </Scene> 
    </Router> 

Was bin ich versuche zu erreichen, wenn ich eine Taste gedrückt haben, nach X Sekunden, um es aus der addRoom Szene navigiert (die per Link auf der Seite mit den Einstellungen zugegriffen wird) zu den Räumen Tabszene. Ich mache das mit dem folgenden Code:

timer.setTimeout(this, 'roomsNavigate',() => Actions.rooms(), 2500); 

Das funktioniert gut und navigiert auf die Zimmerseite korrekt.

Nun ist das Problem, dass wenn ich die Einstellungen Seite zurück und klicken Sie auf dem Link mich auf die Add-Raum Seite zu nehmen, dann bekomme ich folgende Fehlermeldung:

navigationState.children[2].key "scene_addRoom_1_addRoom" conflicts withanother child! 

Ich habe auch bemerkt, dass, wenn ich Klicken Sie auf andere Links auf der Einstellungsseite, dann bringt es mich zur Seite zum Hinzufügen von Räumen und nicht zur richtigen Seite.

Wie kann ich das beheben?

Antwort

0
<Router navigationBarStyle={styles.navigationBody} titleStyle={styles.navigationTitle} duration={0} > 
    <Scene key="root"> 
     <Scene key="addNode" component={HA_AddNode} socket={socket} rooms={["Living Room", "Master Bedroom", "Hall", "Office"]} nodes ={["Light Switch", "Socket"]} title="Add Node" backTitle="Back" backButtonTextStyle={{color: 'white'}} backButtonImage={require('./images/back_arrow_icon.png')} onLeft={()=> Actions.pop()} /> 
     <Scene key="addRoom" component={HA_AddRoom} socket={socket} locations={["Downstairs", "Upstairs"]} title="Add Room" backTitle="Back" backButtonTextStyle={{color: 'white'}} backButtonImage={require('./images/back_arrow_icon.png')} onLeft={()=> Actions.pop()} /> 
     <Scene key="tabBar" tabs style={styles.tabBar} initial={true}> 
     <Scene key='dashboard' component={HA_Dashboard} title='Dashboard' initial={true} icon={HA_TabIcon} iconTitle="ios-home-outline" /> 
     <Scene key='rooms' component={HA_Rooms} title='Rooms' icon={HA_TabIcon} iconTitle="ios-list-box-outline" /> 
     <Scene key='settings' component={HA_Settings} title='Settings' icon={HA_TabIcon} iconTitle="ios-settings-outline" /> 
     </Scene> 
    </Scene> 
    </Router> 
sind

Sie kann nicht navigate zu Dashboard, Räume oder Einstellungen von addNode oder addRoom Szenen. Sie können nur zu TabBar-Szenen von ihnen navigieren.

Aber von Dashboard-, Raum- und Einstellungsszenen können Sie zu addNode- oder addRoom-Szenen navigieren.

+0

Ah. Ich wusste nicht, dass das der Fall war. Kannst du mir einen Artikel erklären oder verlinken, der die Gründe dafür erklärt? Würde ich dann theoretisch dann zur TabBar und dann zu Räumen navigieren müssen? – Tenatious

+0

@Tentious Nun, ich habe keine Verbindung, die das sagt, aber es dauerte einige Zeit, um herauszufinden, was in RM-Router-Flux möglich ist.Ja, Sie können TabBar mit einigen Requisiten zu navigieren. Da das Dashboard die anfängliche Ansicht in deiner Tableiste ist, musst du basierend auf diesen Requisiten erneut zu einer anderen Szene navigieren. Ich bin mir nicht sicher, ob das eine gute Idee ist oder nicht. – Ataomega

0

Wie gehst du zurück zur Einstellungsseite?

Ihre "addRoom" -Szene wurde bereits dem Stapel hinzugefügt, was diesen Konflikt erklären kann.

Sie haben mehrere Lösungen, um das zu beheben (aber das wird das Verhalten ändern).

A) Setzen Sie den Stapel, wenn Sie die addRoom Szene öffnen

timer.setTimeout(this, 'roomsNavigate',() => Actions.rooms({type: ActionConst.RESET}), 2500); 

B) den Stapel zurückstellen, wenn Sie in den Einstellungen Szene

<Scene type={ActionConst.RESET} key='settings' component={HA_Settings} title='Settings' icon={HA_TabIcon} iconTitle="ios-settings-outline" /> 
+0

Option A entfernt das Dashboard und Einstellungen aus der Tab-Leiste, Lässt nur das Zimmer Icon/Titel und macht die Statusleiste schwarz. Option B macht das gleiche, aber wenn Sie auf das Einstellungssymbol klicken. Entfernt Dashboard und Räume. – Tenatious

+0

Sorry, ich habe nicht gesehen, dass es in einer Tableiste war. Die Notiz von Ataomega ist die richtige Antwort. Sie können einen Tab nicht direkt von außen öffnen. Nur der erste Tab in Ihrer Tableiste ist direkt erreichbar. – jpclair

0

Basierend auf @Ataomega Antwort, die ich für die Option ging zurück zu Einstellungen von knallt und dann auf die Zimmer-Seite, die ganz gut zu funktionieren scheint:

timer.setTimeout(this, 'roomsNavigate',() => { 
    Actions.pop() 
    setTimeout(()=>{ 
     Actions.rooms() 
    }) 
}, 2500); 
Verwandte Themen