React native React Native Expo:登录时,设置状态

React native React Native Expo:登录时,设置状态,react-native,expo,state,setstate,React Native,Expo,State,Setstate,在初始构建或强制重新启动应用程序时,第一个用户登录不会更新状态。当代码更改并重新刷新应用程序时,用户登录将以预期方式更新状态 这是初始构建控制台.log(“stateUser”,stateUser): 这是刷新的console.log(“stateUser”,stateUser): 这是嵌套在React.useMoom()中的我的setState调用: 我的解决方案是放弃异步存储,转移到安全的地方。我使用了Firebase Auth stateUser stateUser Array [ O

在初始构建或强制重新启动应用程序时,第一个用户登录不会更新状态。当代码更改并重新刷新应用程序时,用户登录将以预期方式更新状态

这是初始构建控制台.log(“stateUser”,stateUser):

这是刷新的console.log(“stateUser”,stateUser):

这是嵌套在React.useMoom()中的我的setState调用:


我的解决方案是放弃异步存储,转移到安全的地方。我使用了Firebase Auth

stateUser
stateUser Array [
 Object {
"email": "this@email.com",
"id": 4,
"password": "",
"userToken": "devToken",
"username": "a",
   },
]
  const authContext = React.useMemo(() => ({
signIn: async (foundUser) => {
  // console.log(foundUser);
  userInfo = foundUser;

  const userToken = String(foundUser[0].userToken);
  const userName = foundUser[0].username;

  
  foundUserState = foundUser;
  setStateUser(foundUserState);

  loginStateUpdater(foundUser);
  // console.log(foundUser);
  // console.log("aaaaaa", stateUser, "this is the stateUser")

  try {
    await AsyncStorage.setItem("userToken", userToken);
  } catch (e) {
    console.log(e);
  }
  // console.log('user token: ', userToken);
  dispatch({ type: "LOGIN", id: userName, token: userToken });
},