我是新来的本地人,所以请忍受我。
这是我的访问令牌的异步存储,令牌是API响应的参数之一。这个代码在登录屏幕上
async getToken() {
try{
const token = await AsyncStorage.getItem('ACCESS_TOKEN');
if(token !== null) {
this.props.navigation.navigate('Profile')
}
else{
this.props.navigation.navigate('Login')
}
}
catch (error){
console.log('Something went wrong');
}
}
async storeToken(accessToken) {
try{
await AsyncStorage.setItem('ACCESS_TOKEN', accessToken);
this.getToken();
}
catch (error) {
console.log('something went wrong');
}
}
登录时,它会将我导航到“个人资料”页面,但刷新应用程序后,它将返回到登录页面或导航树
这是设置导航的我的app.js
const TodoNav = StackNavigator({
Login: { screen: Login },
SignUp: { screen: SignUp },
ForgotPassword: { screen: ForgotPassword },
Profile: { screen: Profile },
MenuScreen: { screen: MenuScreen },
}, {
mode: 'modal'
})
export default class App extends Component{
render() {
return (
<TodoNav />
);
}
}
答案 0 :(得分:1)
AsyncStorage不负责保存应用程序的导航状态,它将在您传递给应用程序时存储数据。有关更多详细信息,请参阅AsyncStorage的文档。(Here) 为了显示主屏幕,您需要在 App.js 中检查异步存储数据 然后相应地创建导航堆栈,例如:
如果找到AccessToken :
const TodoNavAuthenticated = StackNavigator({
Profile: { screen: Profile },
MenuScreen: { screen: MenuScreen },
}, {
mode: 'modal'
})
如果未找到Accesstoken,则表明您尚未登录:
const TodoNav = StackNavigator({
Login: { screen: Login },
SignUp: { screen: SignUp },
ForgotPassword: { screen: ForgotPassword },
Profile: { screen: Profile },
MenuScreen: { screen: MenuScreen },
}, {
mode: 'modal'
})
在使用<ToDoNav />
时,即在App.js render()方法内部,需要对此进行检查。