我正在尝试使用 react-native-navigation,但我遇到了一个简单的问题。
该应用程序有一个没有标签的登录页面。(非常类似于 facebook 登录页面)(图片参考 - 图片只是为了给出一个想法。图片礼貌 - Google 用户登录后,我想转换为基于标签的应用程序,并且我希望两者都有不同的导航堆栈选项卡(就像在Quora这样的应用程序中发生的那样)(图片参考 -同样图片只是一个参考)
我正在使用 mobx 进行状态管理。
我知道这是一个常见的用例,但我对我知道的两个选项感到困惑 -
提供对用户登录变量的反应,并从单屏应用程序更改为基于选项卡的应用程序。(唯一的问题是当对 isLoggedIn 的反应发生时缺少动画)例如 - App.js
constructor() { reaction(() => auth.isLoggedIn, () => app.navigateToHome()) reaction(() => app.root, () => this.startApp(app.root)); app.appInitialized();
}
startApp(root){ switch (root) { case 'user.login': Navigation.startTabBasedApp({ tabs: [ { label: 'One', screen: 'user.login', icon: require('./assets/one.png'), selectedIcon: require('./assets/one_selected.png'), navigatorStyle: {}, } ] screen: { screen: root, title: 'Login', navigatorStyle: { screenBackgroundColor: colors.BACKGROUND, statusBarColor: colors.BACKGROUND }, navigatorButtons: {} } }) return ; case 'user.home': Navigation.startTabBasedApp({ tabs: [ { label: 'One', screen: 'user.home', icon: require('./assets/one.png'), selectedIcon: require('./assets/one_selected.png'), navigatorStyle: {}, }, { label: 'Two', screen: 'user.home', icon: require('./assets/two.png'), selectedIcon: require('./assets/two_selected.png'), title: 'Screen Two', navigatorStyle: {}, } ], animationType: 'slide-down', }); return; default: console.error('Unknown app root'); } }
使用单屏应用程序,但在主屏幕中实现选项卡。使用这种方法,我必须自己为两个选项卡实现不同的导航堆栈。(react-native-navigation 已经实现了这个。所以,不用担心方法 1 中关于导航堆栈的问题)
例如 - App.js
Navigation.startSingleScreenApp({
screen: {
screen: root,
title: 'Login',
navigatorStyle: {
screenBackgroundColor: colors.BACKGROUND,
statusBarColor: colors.BACKGROUND
},
navigatorButtons: {}
}
})
主页.js
<Tabs>
<Tab
titleStyle={{fontWeight: 'bold', fontSize: 10}}
selectedTitleStyle={{marginTop: -1, marginBottom: 6}}
selected={true}
renderIcon={() => <Icon containerStyle={{justifyContent: 'center', alignItems: 'center', marginTop: 12}} color={'#5e6977'} name='whatshot' size={33} />}
renderSelectedIcon={() => <Icon color={'#6296f9'} name='whatshot' size={30} />}
>
<Feed />
</Tab>
<Tab
titleStyle={{fontWeight: 'bold', fontSize: 10}}
selectedTitleStyle={{marginTop: -1, marginBottom: 6}}
selected={selectedTab === 'profile'}
title={selectedTab === 'profile' ? 'PROFILE' : null}
renderIcon={() => <Icon containerStyle={{justifyContent: 'center', alignItems: 'center', marginTop: 12}} color={'#5e6977'} name='person' size={33} />}
renderSelectedIcon={() => <Icon color={'#6296f9'} name='person' size={30} />}
onPress={() => this.changeTab('profile')}>
<Profile />
</Tab>
</Tabs>
在 react-native 中管理选项卡的最佳实践是什么?在我的用例中,我应该使用哪种方法?