2016-08-05 2 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> 
) 

при навигации через приложение все работает отлично.

Фактическое поведение

Когда я ударил перезагрузки (или Ctrl + R), ток показали сцены, напр. экран профиля, get сбрасываются на другую совершенно другую сцену.

Ex. В настоящее время логика в моем приложении выглядит следующим образом:

первых журналы время пользователь в -> показать экран приглашения друга -> перейти на приборную панель страницы каждых войти в системе -> перейти на приборную панель страницу

однако всякий раз, когда я ударил Cmd + RI всегда отправляется на пригласительный экран друга, разумеется, это очень раздражает и занимает много времени.

+0

Вы написали оригинал на панели инструментов и друга, так что реагируйте на собственный поток маршрутизатора, считая последнего друга в качестве начальной сцены. –

+0

это неправильный способ определить начальную сцену –

+0

только один экран будет начальным, вам придется перемещаться по некоторому булевому знаку другому –

ответ

0

После некоторого вовлечения кода и чтения дополнительной документации, похоже, нет простого способа сделать это (даже не уверен, что это возможно), похоже, это будет новая функция для библиотеки.

Теперь я использую hot reloading (жест встряхивания -> включить горячую перезагрузку), это не идеально, в некоторых случаях, когда поведение не так, как ожидалось, и мне нужно перезагрузить браузер и вручную перейти на страницу, но в 70-80% случаев это достигает того, что я хотел.

Смежные вопросы