Вот как я работаю в своем приложении:
<Router createReducer={reducerCreate} getSceneStyle={getSceneStyle}>
<Scene key="root">
<Scene key="login" direction="vertical" component={Login} title={I18n.t("login_page_nav_title")} hideTabBar hideNavBar initial={!this.state.isLoggedIn}/>
<Scene key="addaccount" direction="vertical" component={Login} title={I18n.t("login_page_nav_title")} navigationBarStyle={styles.navigationBarStyle} titleStyle={styles.titleStyle} backButtonTextStyle={styles.backButtonTextStyle} backTitle={I18n.t("back_button")} hideTabBar />
<Scene key="tabbar">
<Scene key="main" tabs tabBarStyle={styles.tabBarStyle} tabBarSelectedItemStyle={styles.tabBarSelectedItemStyle} tabBarIconContainerStyle={styles.tabBarIconContainerStyle} >
<Scene key="courses" component={Courses} title={I18n.t("courses_tab_title")} icon={IconCourses} navigationBarStyle={styles.navigationBarStyle} titleStyle={styles.titleStyle} />
<Scene key="register" component={Register} title={I18n.t("register_tab_nav_title")} icon={IconRegister} navigationBarStyle={styles.navigationBarStyle} titleStyle={styles.titleStyle} />
<Scene key="schedule" component={Schedule} title={I18n.t("schedule_page_nav_title")} icon={IconSchedule} navigationBarStyle={styles.navigationBarStyle} titleStyle={styles.titleStyle} />
<Scene key="evaluation" component={Evaluation} title={I18n.t("evaluation_page_nav_title")} icon={IconEvaluation} navigationBarStyle={styles.navigationBarStyle} titleStyle={styles.titleStyle} />
<Scene key="profile" component={Profile} title={I18n.t("profile_page_nav_title")} icon={IconProfile} navigationBarStyle={styles.navigationBarStyle} titleStyle={styles.titleStyle}/>
</Scene>
</Scene>
<Scene key="terms" component={Terms} hideTabBar hideNavBar />
<Scene key="grab" component={Grab} hideTabBar hideNavBar initial={this.state.isLoggedIn}/>
<Scene key="rdetails" component={RDetails} title={I18n.t("details_page_nav_title")} navigationBarStyle={styles.navigationBarStyle} titleStyle={styles.titleStyle} backButtonTextStyle={styles.backButtonTextStyle} backTitle={I18n.t("back_button")} hideTabBar />
<Scene key="cdetails" component={CDetails} title={I18n.t("details_page_nav_title")} navigationBarStyle={styles.navigationBarStyle} titleStyle={styles.titleStyle} backButtonTextStyle={styles.backButtonTextStyle} backTitle={I18n.t("back_button")} hideTabBar />
</Scene>
</Router>
Таким образом, я могу перемещаться по и из всех сцен, вложенных в tabbar / main, я могу перемещаться из курсов для регистрации или, например, профиля. Я также могу перейти к терминам grab rdetails и cdetails. Но переходить с cdetails на курсы или профиль невозможно, как я знаю. Я могу только перейти на вкладку с терминов или захватить. Но так как захват и условия объявлены на более высоких уровнях, они доступны на более глубоких уровнях.
Надеюсь, поможет.
Обновить :
Поскольку я перемещался в компонент «Профиль» по вертикали, как я могу отключить компонент «Профиль» вертикально при навигации, даже если вы переходите к компоненту без направления = «по вертикали»?
Не уверен, но я думаю, когда вы перемещаетесь из профиля в другой компонент, вы не видите, что профиль отключается. если вы хотите размонтировать его по вертикали, вам нужно сделать Action.pop (), чтобы он работал. Вы также можете использовать несколько действий следующим образом:
Action.pop();
Action.SomeComponent({type: 'reset'});