【发布时间】:2021-02-23 23:35:19
【问题描述】:
我似乎无法对我的 App.js 文件进行三元身份验证。我正在检查是否有密钥,然后根据该密钥的存在显示 AuthStack 或 MainStack。当我从 AuthStack 转到 MainStack(设置 AsyncStorage 的密钥)时,我收到错误消息 - 任何导航器都未处理带有有效负载 {'name':'Home'} 的操作'NAVIGATE'。当我注销或移除密钥时也会发生同样的情况。
根据文档,用户似乎会在通过身份验证后立即导航到应用程序,但这似乎不起作用。
App.js 文件
import React, { useState, useEffect } from 'react';
import AsyncStorage from '@react-native-community/async-storage';
import { NavigationContainer } from '@react-navigation/native';
import AuthStack from './src/navigation/AuthStack'
import MainStack from './src/navigation/MainStack'
export default function App({ navigation }) {
const [userKey, setUserKey] = useState(null)
useEffect(() => {
const bootstrapAsync = async () => {
try {
let userKey = await AsyncStorage.getItem('userKey')
setUserKey(userKey)
} catch (e) {
// Restoring token failed
}
}
bootstrapAsync()
}, [])
return (
<NavigationContainer >
{userKey == null ? (
<AuthStack />
) : (
<MainStack />
)}
</NavigationContainer>
);
}
授权栈
function AuthStack() {
return (
<Stack.Navigator>
<Stack.Screen name="Login" component={LoginScreen} />
<Stack.Screen name="ForgotPassword" component={ForgotPasswordScreen} />
<Stack.Screen name="SignUp" component={SignUpScreen} />
</Stack.Navigator>
)
}
export default AuthStack
主堆栈
function MainStack({ navigation, route }) {
return (
<Stack.Navigator>
<Stack.Screen name='Home' component={HomeScreen} />
</Stack.Navigator>
)
}
export default MainStack
【问题讨论】:
标签: react-native authentication react-navigation-v5