Reactjs 没有';无法正确返回AsyncStorage.getItem()

Reactjs 没有';无法正确返回AsyncStorage.getItem(),reactjs,react-native,async-await,Reactjs,React Native,Async Await,我尝试使用sync函数从AsyncStorage中的键中获取值,并尝试在console.log()命令上打印该值,但当我使用三元函数生成if时,会出现如下错误 未捕获错误:不变冲突:不变冲突:对象作为React子对象无效(找到:具有键{u 40、{u 65、{u 55、{u 72)的对象) 这里是navigator react native的部分代码 Guest:{ screen:MainScreen, navigationOptions: ({navigation}) => ({

我尝试使用sync函数从AsyncStorage中的键中获取值,并尝试在console.log()命令上打印该值,但当我使用三元函数生成if时,会出现如下错误

未捕获错误:不变冲突:不变冲突:对象作为React子对象无效(找到:具有键{u 40、{u 65、{u 55、{u 72)的对象)

这里是navigator react native的部分代码

Guest:{
screen:MainScreen,
navigationOptions: ({navigation}) => ({
    headerLeft:
          (async () => {
              const login = await AsyncStorage.getItem("isLogin");
              (login == null) ?
              <Text></Text>
              :
              <Icon
                style={{ paddingLeft: 10, color: '#ffffff', }}
                onPress={() => navigation.openDrawer()}
                name="menu"
                size={30}
              />
          })

       ,
    headerTransparent:true,
 })
客人:{
屏幕:主屏幕,
导航选项:({navigation})=>({
左校长:
(异步()=>{
const login=await AsyncStorage.getItem(“isLogin”);
(登录名==null)?
:
navigation.openDrawer()}
name=“菜单”
大小={30}
/>
})
,
校长:是的,
})

}

为页眉左侧创建组件,其中包含从存储中获取的内容的状态,并将导航作为道具推送。 在异步组件上,将装载组件从存储中获取异步并更新状态

 Guest:{
screen:MainScreen,
navigationOptions: ({navigation}) => ({
 headerLeft:<MyHeaderLeft navigation={navigation}/>.....
客人:{
屏幕:主屏幕,
导航选项:({navigation})=>({
头左:。。。。。

您的
headerLeft
函数返回承诺,因为它是
异步的

但是
headerLeft
必须返回React.Element,我猜

所以最好删除异步并创建单独的组件

import React, { useEffect, useState } from 'react';

const getLogin = async(setLogin) => {
  const login = await AsyncStorage.getItem('isLogin');
  setLogin(login);
}

export const HeaderLeft = ({navigation}) => {
  const [login, setLogin] = useState(null);
  useEffect(() => {
    getLogin(setLogin);
  }, []);
  return (login == null)
    ? <Text/>
    : <Icon
        style={{ paddingLeft: 10, color: '#ffffff', }}
        onPress={() => navigation.openDrawer()}
        name="menu"
        size={30}
      />
}
import React,{useffect,useState}来自“React”;
const getLogin=async(setLogin)=>{
const login=await AsyncStorage.getItem('isLogin');
setLogin(login);
}
导出常量HeaderLeft=({navigation})=>{
const[login,setLogin]=useState(null);
useffect(()=>{
getLogin(setLogin);
}, []);
返回(login==null)
? 
:navigation.openDrawer()}
name=“菜单”
大小={30}
/>
}
和使用一样

...
headerLeft: <HeaderLeft navigation={navigation}/>
....
。。。
左校长:
....

您编写过示例代码吗?我尝试过编写,但仍然无法正常工作,几乎忘记清除异步存储。但有一个小问题,我无法通过导航道具,请尝试使用@Alfian我刚刚在函数道具中添加了{navigation},您可以尝试