React native Partiall工作:尝试在React Native中使用componentDidMount获取AsyncStorage对象

React native Partiall工作:尝试在React Native中使用componentDidMount获取AsyncStorage对象,react-native,components,asyncstorage,React Native,Components,Asyncstorage,问题是: 如果有用户,App.js将重定向到主页,我可以获取异步存储对象 但若并没有用户,它将重定向到登录页面,控制台显示该对象为空(好的,因为若并没有用户,我并没有设置该对象),当它登录时,App.js将设置项(显示在控制台中)并重定向到主页(但在这种情况下,我的异步存储仅显示{}) 主页 async componentDidMount() { myArray = await AsyncStorage.getItem('userInfo'); const d = JSON.parse(

问题是: 如果有用户,App.js将重定向到主页,我可以获取异步存储对象

但若并没有用户,它将重定向到登录页面,控制台显示该对象为空(好的,因为若并没有用户,我并没有设置该对象),当它登录时,App.js将设置项(显示在控制台中)并重定向到主页(但在这种情况下,我的异步存储仅显示{})

主页

async componentDidMount() {
  myArray = await AsyncStorage.getItem('userInfo');
  const d = JSON.parse(myArray);
  console.log('dddddddddddd:',d)
  this.setState({userInfa: d})
}
我的控制台

App.js

componentDidMount() {
 this.authListener();
}
authListener() {
 firebase.auth().onAuthStateChanged(user => {
   if (user) {
     this.setState({ user });
     const userInfo = {
       username: user.displayName,
       emailVerified: user.emailVerified,
       photoURL: user.photoURL,
       userId: user.uid
     }
     AsyncStorage.setItem('userInfo', JSON.stringify(userInfo));
     console.log('userInfo:::::::AAAAAppp', userInfo)
    } else {
     this.setState({ user: null });
   }
  });
  }
我是react native的新用户,实际上我不理解componendimount()。希望你能帮忙


就可用信息量而言,可能存在两个问题,一个是AsyncStorage没有在本地存储中设置该项(您正在记录userInfo,这是本地常量,您如何知道AsyncStorage是否正在设置它),另一个是在将其存储到本地存储之前获取该项(因为我看到您在存储时没有使用async Wait)

所以我需要在我的App.js存储中使用async/await?是的。确保在本地存储中设置它。在本地存储中设置它后,在App.js中使用getItem,获取usrInfo并记录它。检查它是否为空对象。在上面的图像中,在完成async.setItem后,通过async.getItem记录本地常量