反应本地异步存储无法正常工作

时间:2020-11-12 12:09:41

标签: reactjs

我的本​​机应用程序中有2个导航器。

我正在尝试有条件地在App.js中使用它们

我在一个屏幕上设置了项目,然后我试图这样做

  export default function App() {
  const logedStatus = AsyncStorage.getItem('logedIn').then(logedIn => logedIn)
  return (
    <Provider store={store}>
      {logedStatus.length === 0 ? <Navigator /> : <LogedInNav/>}
      <Snackbar />
    </Provider>
  );
}

无论我尝试启动应用程序多少次,它总是呈现logedInNav导航,我很困惑,如果您不自己清除它,存储区将永远不会为空吗?还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要使用state和useEffect

 import {useState,useEffect} from 'react'
 export default function App() {
   const[logedStatus,setlogedStatus])useState(false)
  useEffect(()=>{
     let mounted=true;
      AsyncStorage.getItem('logedIn').then(logedIn =>{
             if(mounted) setlogedStatus(logedIn)
       })
      return()=>{mounted=false;}
  },[])

  return (
    <Provider store={store}>
      {logedStatus.length === 0 ? <Navigator /> : <LogedInNav/>}
      <Snackbar />
    </Provider>
  );
}