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

标签 javascript reactjs react-native redux react-navigation

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

此外,如果这是用户第一次打开该应用,我想显示一个入门/欢迎屏幕,我会在其中解释该应用。

现在我正在使用 redux-persist 保持我的 redux 状态,所以当我打开应用程序时(即没有在后台打开它),我希望用户看到 如果他/她未登录,则为登录 屏幕;如果用户已登录,则为 屏幕。

我明白我应该将我的主选项卡导航器嵌套在堆栈导航器中,这样堆栈导航器就有屏幕 WelcomeScreenLoginScreenMain.

但是如何在应用程序首次打开时检查用户是否已登录,然后重定向到 Login 屏幕?我看过https://github.com/react-community/react-navigation/blob/master/examples/ReduxExample/src/reducers/index.js , 但不是很直观地理解 firstActiontempNavStatesecondAction 的含义。

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

最佳答案

在根容器中检查用户是否登录并相应地导航登录状态。 看到这篇文章 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/

相关文章:

react-native - this.props.navigation.toggedrawer 不是函数-React Native 0.59.9 React Navigation 3.11.0

Android Studio 正在为 3 个月大的 react-native 项目生成非常旧的 apk

javascript - 在文本区域中按下 Enter 时段落中的新行

javascript - 日/日期/时间/温度信息栏

php - 在线酒店预订系统,同时预订?

javascript - NodeJS - FormData 向服务器发送未定义的值

javascript - 如何在 redux 中使用 axios 库将数据发布到 API 服务器

javascript - 去抖动和 react 窗口调整这个引用问题

javascript - ReactJS setState 不适用于复选框的第一个切换

javascript - 滚动到顶部并同时刷新页面