У меня есть структура сцены на основе вкладок:реагируют-нативный-маршрутизатор-поток, сохранить состояние после перезагрузки
Текущий код структуры
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 всегда отправляется на пригласительный экран друга, разумеется, это очень раздражает и занимает много времени.
Вы написали оригинал на панели инструментов и друга, так что реагируйте на собственный поток маршрутизатора, считая последнего друга в качестве начальной сцены. –
это неправильный способ определить начальную сцену –
только один экран будет начальным, вам придется перемещаться по некоторому булевому знаку другому –