我正在使用32版本的博览会。在登录屏幕上,我将AsyncStorage设置为:
await AsyncStorage.setItem('@MyApp:user', '1');
当API在给定凭据上返回true时,以上代码将运行。在App.js中,通过使用React导航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值。我不知道它与expo有关的问题,也没有反应导航问题。有没有人有同样的问题。我的sqlite也有同样的问题。如果我在登录之前在我的sqlite中添加了一些内容并尝试在下一个屏幕中获取数据,它也不会显示任何内容,但是如果我关闭该应用程序并重新打开,则它会显示来自sqlite的数据。请指出问题所在。
在我的登录页面上,我正在获取数据,例如:
async componentDidMount() {
var uid = await AsyncStorage.getItem('@MyApp:user')
console.log(uid)
}
答案 0 :(得分:0)
似乎您正在尝试呈现非prop
或state
以外的数据。
如果您有数据在React的初始渲染之后输入,除非更改为state
或props
,否则它将不会更新。
您可以做的是将用户值和sqlite数据设置为组件的状态。