【发布时间】:2019-07-16 13:46:41
【问题描述】:
我正在使用 expo 版本 32。在我的登录屏幕上,我将 AsyncStorage 设置为:
await AsyncStorage.setItem('@MyApp:user', '1');
当 API 在给定凭据上返回 true 时,上面的代码运行。在 App.js 中,通过使用反应导航 2,它重定向到我的着陆页。
const AppStack = createDrawerNavigator({
Screen_Landing: { screen: Screen_Landing}
}, {backBehavior: 'initialRoute'});
const AppScreens = createStackNavigator({
AppStack: { screen: AppStack}
}, {headerMode:'none'})
const AuthStack = createSwitchNavigator({Screen_Login: { screen: Screen_Login}},{headerMode:'none'});
const MyNavigator = createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen,
App: AppScreens,
Auth: AuthStack,
},
{
initialRouteName: 'AuthLoading'
}
);
问题是,当我成功登录时,它会将我重定向到登录页面,但登录页面没有获取 AsyncStorage 值,但是当我完全关闭应用程序并重新打开它时,它会显示 AsyncStorage 值。我不知道它与世博会的问题或反应导航问题。有没有人有同样的问题。我的sqlite也有同样的问题。如果我在登录前在我的 sqlite 中添加一些内容并尝试在下一个屏幕中获取数据,它也不会显示任何内容,但如果我关闭应用程序并重新打开,那么它会显示来自 sqlite 的数据。请指导是什么问题。
在我的着陆页上,我正在获取如下数据:
async componentDidMount() {
var uid = await AsyncStorage.getItem('@MyApp:user')
console.log(uid)
}
【问题讨论】:
-
你的Landing Page是否已经挂载了?问题可能是
Login后没有重新挂载,而是在应用关闭后挂载,你可以在componentDidMount再写一条日志语句来验证。跨度> -
你是如何“展示”价值的?
-
在 componentDidMount 我把它叫做 var uid = await AsyncStorage.getItem('@MyApp:user') console.log(uid)
-
那么,它不是记录(来自console.log)uid吗?
标签: reactjs sqlite react-native expo asyncstorage