0

반응 네이티브 라우터 플럭스를 사용 중이고 장면 사이를 이동하는 데 문제가있어 나를 미치게 만듭니다! React Native Router Flux - 장면으로 돌아 가기 - 다른 어린이와 충돌 -

는 공유기입니다 :

<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> 

내가 버튼을 누를 때 나는 그것이 (설정 페이지에서 링크를 통해 액세스 할 수 있음) addRoom 현장에서 탐색 X의 초 후에, 달성하는 것을 시도하고있다 객실 탭 장면으로 이동합니다. 다음 코드를 사용하여이 작업을 수행하고 있습니다.

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

제대로 작동하고 객실 페이지를 올바르게 탐색합니다.

이제 문제는 나는 다음과 같은 오류 얻을 내가 설정 페이지를 다시 가서 링크를 클릭하면 다음 추가 룸 페이지로 데려다 즉 :

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

는 또한 발견했습니다 그 경우 I 설정 페이지에서 다른 링크를 클릭하면 추가 페이지로 이동하고 올바른 페이지로 이동하지 않습니다.

어떻게 해결할 수 있습니까?

답변

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> 

당신 수 없습니다 탐색에 addNode 또는 addRoom 장면의 대시 보드, 회의실 또는 설정. TabBar 장면으로 이동할 수 있습니다.

대시 보드, 회의실 및 설정 장면에서 addNode 또는 addRoom 장면으로 이동할 수 있습니다. 내가 꽤 잘 작동하는 것 같다 객실 페이지로 다시 설정하고 터지는 옵션에 들어갑니다 @Ataomega 답변에 따라

+0

Ah. 나는 그것이 사실이라는 것을 깨닫지 못했다. 그 이유를 설명하는 기사에 나를 설명하거나 링크 할 수 있습니까? 이론적으로는 TabBar로 이동 한 다음 방으로 이동해야합니까? – Tenatious

+0

@Tenatious 글쎄, 나는 그렇게 말하는 링크가 없지만, rn-router-flux에서 가능한 것이 무엇인지 알아내는 데 어느 정도 시간이 걸렸다.네, tabbar로 이동할 수 있습니다. 대시 보드는 탭바의 초기보기이므로 해당 소품을 기반으로 다른 장면으로 다시 이동해야합니다. 그렇게하는 것이 좋은지 아닌지 잘 모르겠습니다. – Ataomega

0

어떻게 설정 페이지로 돌아 옵니까?

"addRoom"장면이 이미 스택에 추가되어이 충돌을 설명 할 수 있습니다.

해결 방법은 여러 가지가 있지만 문제가 해결됩니다.

A)는 addRoom 장면을

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

B를 열 때 스택 재설정)이 설정 현장에있을 때 스택을 다시

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

옵션 A는 탭 표시 줄에서 대시 보드 및 설정을 제거, 객실 아이콘/제목을 남기고 상태 표시 줄을 검게 만듭니다. 옵션 B는 설정 아이콘을 클릭했을 때와 동일하게 작동합니다. 대시 보드 및 회의실을 제거합니다. – Tenatious

+0

죄송합니다. 탭바 안에있는 것을 보지 못했습니다. Ataomega의 메모가 올바른 대답입니다. 외부에서 탭을 직접 열 수는 없습니다. 탭바의 초기 탭에만 직접 접근 할 수 있습니다. – jpclair

0

:

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