Javascript 使用react navigation打开应用程序时,如果用户未登录,则显示登录屏幕

Javascript 使用react navigation打开应用程序时,如果用户未登录,则显示登录屏幕,javascript,reactjs,react-native,redux,react-navigation,Javascript,Reactjs,React Native,Redux,React Navigation,我正在尝试创建一个具有主选项卡导航器的应用程序,但是如果用户未登录,他/她应该首先看到登录屏幕(但是,我仍然希望用户获得跳过登录的选项) 此外,如果用户是第一次打开应用程序,我想显示一个入职/欢迎屏幕,在那里我解释应用程序 现在,我正在使用redux persist来保持我的redux状态,因此,当我打开应用程序时(即,不在后台打开应用程序),如果用户未登录,我希望用户看到登录屏幕,如果用户已登录,则看到主屏幕 我已经了解,我应该将我的主选项卡导航器嵌套在堆栈导航器中,这样堆栈导航器就有了屏幕W

我正在尝试创建一个具有主选项卡导航器的应用程序,但是如果用户未登录,他/她应该首先看到登录屏幕(但是,我仍然希望用户获得跳过登录的选项)

此外,如果用户是第一次打开应用程序,我想显示一个入职/欢迎屏幕,在那里我解释应用程序

现在,我正在使用
redux persist
来保持我的redux状态,因此,当我打开应用程序时(即,不在后台打开应用程序),如果用户未登录,我希望用户看到
登录
屏幕,如果用户已登录,则看到
屏幕

我已经了解,我应该将我的主选项卡导航器嵌套在堆栈导航器中,这样堆栈导航器就有了屏幕
WelcomeScreen
LoginScreen
main

但是,如何在应用程序首次打开时检查用户是否已登录,然后重定向到
登录
屏幕?我已经看过了,但它不是非常直观的什么是
firstAction
tempNavState
,和
secondAction


是否需要创建一个中间件来检查用户是否登录?

在根容器中,检查用户是否登录,并相应地导航。 看到这个帖子了吗 不要像他在帖子中使用的那样使用异步存储,而是使用redux状态来确定用户是否已登录。 另一个对用户友好的技巧是使用此软件包,不要隐藏初始屏幕,等待2秒钟,以便调度redux persist操作,恢复状态,并在这段时间内导航。 使用此方法将不会出现闪烁

class AppWithNavigationState extends Component { 
    componentDidMount () { 
       setTimeout(()=>{ 
             if(this.props.loggedIn)
               { NavigationActions.navigate({ routeName: 'Main' }), } 

               setTimeout(SplashScreen.hide, 500)
     })
   }}

因此,我不应该在导航减速机中添加任何登录,而是简单地在我的根容器中做所有的事情?如果你使用减速机并熟悉它,而不仅仅是在根减速器中调度登录动作,这将考虑用户的身份验证,并且将触发导航动作来将用户导航到主屏幕。这样做。我是否应该创建一个动作
checkIfUserIsLoggedIn
,该动作将在根组件的
componentDidMount()
中调用?而且
checkIfUserIsLoggedIn
操作是否应该包含dispatch
{type:'NOT_LOGGED_IN'}
,以便我在
navReducer
中可以重置导航并将用户导航到登录屏幕?如果我使用
react navigation
提出的redux示例,我的根组件在哪里?是否是
constappwithnavigationstate=({dispatch,nav})=>()
查看更新的答案使登录成为默认场景并使用上述代码