2016-08-05 56 views
0

,当我有一个基于标签的场景结构:反应本地路由器通量,保守国家重装

当前的代码结构

Routes.js

class Routes extends Component { 

    render() { 

    function selector(props) { 
     return props.auth.isLoggedIn ? (props.auth.isVerified? 'home': 'authenticate') : 'authenticate' 
    } 

    const component = connect(state => ({ 
     auth: state.auth, 
    }))(Switch) 

    return (
     <AppRouter> 
     <Scene key="root" component={component} tabs selector={selector} hideNavBar hideTabBar> 
      <Scene key="authenticate" hideTabBar> 
      <Scene type="replace" key="login" initial component={GradientBackground(LoginScreen)} hideNavBar/> 
      <Scene type="replace" key="register" component={GradientBackground(RegisterScreen)} hideNavBar/> 
      <Scene type="replace" key="forgotPassword" component={GradientBackground(ForgotPasswordScreen)} hideNavBar/> 
      <Scene type="replace" key="emailConfirmation" component={GradientBackground(EmailConfirmationScreen)} hideNavBar/> 
      </Scene> 
      <Scene key="home" component={NavigationDrawer} type="replace"> 
      {require('./scenes/home')} 
      </Scene> 
     </Scene> 
     </AppRouter> 
    ) 
    } 
} 

home.js

module.exports = (
    <Scene key="isLoggedIn" unmountScenes initial> 
    {require('./dashboard.js')} 
    {require('./profile.js')} 
    {require('./challenges.js')} 
    {require('./friends.js')} 
    </Scene> 
) 

Dashboard.js

module.exports = (
    <Scene type="replace" key="dashboard" initial navigationBarStyle={styles.transparent} drawerImage={Images.menu} renderRightButton={() => <RoundedButton text="dashboard"/>}> 
    <Scene key="dashboard_home" component={GradientBackground(DashboardScreen)}/> 
    </Scene> 
) 

Friends.js

module.exports = (
    <Scene key="friends" initial navigationBarStyle={styles.transparent} drawerImage={Images.menu} renderRightButton={() => <RoundedButton text="dashboard"/>}> 
    <Scene key="inviteFriends" component={GradientBackground(FriendsInviteScreen)} hideNavBar/> 
    </Scene> 
) 

通过应用程序的一切航行时工作正常。

实际行为

当我打重载(或Cmd的+ R),当前场景所示,离。一个配置文件屏幕,get的重置到另一个完全不同的场景。

Ex。目前在我的应用程序的逻辑是这样的:

第一次用户登录 - >显示好友邀请画面 - >去仪表板页面 每隔日志 - >去仪表板页面

但是每当我打Cmd + RI总是被发送到朋友邀请屏幕,不用说,这是非常烦人和耗时的。

+0

你已经写在仪表板和朋友的初始也是如此反应本地路由器通量考虑最后一个朋友作为初始场景。 –

+0

这是不正确的方式来确定初始场景 –

+0

只有一个屏幕将被初始化,你必须通过一些布尔标志导航到另一个 –

回答

0

经过一段时间的代码摆弄和阅读更多的文档,似乎没有简单的方法来做到这一点(甚至不知道它是可能的),似乎这将是一个图书馆的新功能。

我现在使用的是hot reloading(摇动手势 - >启用热重新加载),这并不理想,有些情况下行为不像预期的那样,我必须重新加载浏览器并手动导航到页面,但70-80%的时间达到了我想要的水平。

相关问题