React native AsyncStorage如何与React导航一起工作?

React native AsyncStorage如何与React导航一起工作?,react-native,react-navigation,react-hooks,react-native-navigation,asyncstorage,React Native,React Navigation,React Hooks,React Native Navigation,Asyncstorage,我试图在我的react本机应用程序中从AsyncStorage获取一个值,但它首先显示为一个空字符串 假设我有两个组件,Home和About About屏幕是我获取异步存储值的地方 我可以使用CreateBoottomTabNavigator在屏幕底部创建导航选项卡,这样我就可以在Home和About之间切换 当我按下About屏幕时,我试图用控制台记录值,但它只是一个空数组。如果我使用挂钩或类似的效果: const [data, setData] = useState([]) const a

我试图在我的react本机应用程序中从AsyncStorage获取一个值,但它首先显示为一个空字符串

假设我有两个组件,Home和About

About屏幕是我获取异步存储值的地方

我可以使用CreateBoottomTabNavigator在屏幕底部创建导航选项卡,这样我就可以在Home和About之间切换

当我按下About屏幕时,我试图用控制台记录值,但它只是一个空数组。如果我使用挂钩或类似的效果:

const [data, setData] = useState([])

const asyncFunctionData = async () => {
  try {
    const storageData = await AsyncStorage.getItem('key_data');
    setData(JSON.parse(storageData));
    console.log(data);
  } catch (e) {}
}

useEffect(() => {
  asyncFunctionData();
}, [data]);
由于某种原因,该组件将持续执行,但经过几次执行后,我终于可以获得AsyncStorage的值。但问题是为什么它要执行多次,为什么一开始就得到一个空数组?我认为使用[]只会执行useEffect一次或在有更新时执行


异步存储对连续执行是否有某种影响?另外,AsyncStorage在应用程序加载时没有获得任何值吗?

您的钩子不依赖于从AsyncStorage获取值后设置的数据,您还应该在useEffect中定义async函数

const [data, setData] = useState([])

useEffect(() => {
 const asyncFunctionData = async () => {
   try {
     const storageData = await AsyncStorage.getItem('key_data');
     setData(JSON.parse(storageData));
   } catch (e) {}
 }
 asyncFunctionData();
}, [setData]);`