React-Native始终在组件

时间:2019-12-04 09:37:44

标签: reactjs react-native react-navigation

我想创建一个函数来检查用户是否仍在登录。如果不是,请返回登录屏幕。 但是,我希望它始终提供给Auth,而不必给每个屏幕都提供导航道具。相反,我希望将其包含在组件内部,以便可以导入它并在需要时调用它。 我是本机反应的新手,还没有找到有关如何执行此操作的任何信息。

开关导航器位于app.js中,如下所示:

    const App = createAppContainer(createSwitchNavigator(
  {
      Starter: AuthLoadingScreen, 
      App: AppStack, 
      Auth: AuthStack
  }, 
  {
      initialRouteName: 'Starter'
  }
));

对不起,英语不好

2 个答案:

答案 0 :(得分:0)

  

我希望将其包含在组件中,以便可以导入它并在需要时调用它。

为此,您可以创建一个单独的功能来检查用户是否登录并导出。然后,在您需要的任何地方,都可以将其导入并调用它,以查看用户是否仍在登录。然后进行相应的操作。

export const checkUser = () => {
    if(loggedIn) {
        return true
    } else {
        return false
    }
}

然后

import {checkUser} from 'path to file where declared'

if(checkUser()) {
    // user logged in
} else {
    // move to login
}

答案 1 :(得分:0)

我建议我看到的是您的初始页面是

 {
      initialRouteName: 'Starter'
  }

因此,假设您已成功登录,之后我将假定您将获得一个令牌,因此将其存储在AsyncStorage中。

现在假设下次用户打开应用程序时,您可以在“开始”页面的componentDidMount中添加以下代码

async componentDidMount(){
await AsyncStorage.getItem("token")?this.props.navigation.navigate("HomeScreen"):this.props.navigation.navigate("LoginScreen")
}

因此,基本上,您要在初始页面中检查异步存储中是否存在令牌,如果存在,则导航至主屏幕,否则重定向至用户将进行身份验证的登录屏幕。

希望那很清楚。毫无疑问。

选中此项以获取异步存储async storage