我想创建一个函数来检查用户是否仍在登录。如果不是,请返回登录屏幕。 但是,我希望它始终提供给Auth,而不必给每个屏幕都提供导航道具。相反,我希望将其包含在组件内部,以便可以导入它并在需要时调用它。 我是本机反应的新手,还没有找到有关如何执行此操作的任何信息。
开关导航器位于app.js中,如下所示:
const App = createAppContainer(createSwitchNavigator(
{
Starter: AuthLoadingScreen,
App: AppStack,
Auth: AuthStack
},
{
initialRouteName: 'Starter'
}
));
对不起,英语不好
答案 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