我有一个基于标签的场景结构:
当前代码结构
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)时,当前显示的场景,例如。在个人资料屏幕上,重置为另一个完全不同的场景。
实施例。目前我的应用程序中的逻辑是这样的:
首次使用者登录 - &gt;显示朋友邀请屏幕 - &gt;转到仪表板页面 每隔一次登录 - &gt;转到信息中心页面
然而每当我点击Cmd + R时,我总会被发送到朋友邀请屏幕,不用说,这非常烦人且费时。
答案 0 :(得分:0)
在摆弄代码并阅读更多文档之后,似乎没有简单的方法可以做到这一点(甚至不确定它是否可行),这似乎是图书馆的新功能。
我现在正在使用hot reloading
(摇动手势 - &gt;启用热重新加载),这是不理想的,有些情况下行为不符合预期,我必须重新加载浏览器并手动导航到该页面,但在70-80%的时间内,这实现了我想要的目标。