无法使用 AsyncStorage 存储登录的用户数据 API
Not able to store logged In user data, using AsyncStorage API
我是 React Native 的新手,所以请多多包涵。
这是我的访问令牌的异步存储,令牌是作为来自 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 />
);
}
}
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() 方法中。
我是 React Native 的新手,所以请多多包涵。
这是我的访问令牌的异步存储,令牌是作为来自 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 />
);
}
}
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() 方法中。