我正在尝试创建一个具有主选项卡导航器的应用程序,但如果用户未登录,他/她应该首先看到登录屏幕(但是,我仍然希望用户获得跳过登录的选项).
此外,如果这是用户第一次打开该应用,我想显示一个入门/欢迎屏幕,我会在其中解释该应用。
现在我正在使用 redux-persist
保持我的 redux 状态,所以当我打开应用程序时(即没有在后台打开它),我希望用户看到 如果他/她未登录,则为登录
屏幕;如果用户已登录,则为主
屏幕。
我明白我应该将我的主选项卡导航器嵌套在堆栈导航器中,这样堆栈导航器就有屏幕 WelcomeScreen
、LoginScreen
和 Main
.
但是如何在应用程序首次打开时检查用户是否已登录,然后重定向到 Login
屏幕?我看过https://github.com/react-community/react-navigation/blob/master/examples/ReduxExample/src/reducers/index.js , 但不是很直观地理解 firstAction
、tempNavState
和 secondAction
的含义。
我是否需要创建一个中间件来检查用户是否已登录?
最佳答案
在根容器中检查用户是否登录并相应地导航登录状态。 看到这篇文章 Login example不要像他在帖子中使用的那样使用异步存储,而是使用 redux 状态来确定用户已登录。 另一个用户友好的技巧是使用 react-native-splash-screen并且不要使用此包隐藏启动画面,等待 2 秒,以便调度恢复状态的 redux-persist 操作,您可以在此期间导航。 使用此方法不会出现闪烁。
class AppWithNavigationState extends Component {
componentDidMount () {
setTimeout(()=>{
if(this.props.loggedIn)
{ NavigationActions.navigate({ routeName: 'Main' }), }
setTimeout(SplashScreen.hide, 500)
})
}}
关于javascript - 如果用户在使用 react-navigation 打开应用程序时未登录,则显示登录屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46514281/