React native 错误:对象作为React native中的React子对象无效

React native 错误:对象作为React native中的React子对象无效,react-native,React Native,我正在用react native开发一个应用程序,我有一个名为“用户”的数组 Array [ Object { "occurrences": 42, "username": "teste0", }, Object { "occurrences": 1, "username": "teste2", }, Object {

我正在用react native开发一个应用程序,我有一个名为“用户”的数组

Array [
  Object {
    "occurrences": 42,
    "username": "teste0",
  },
  Object {
    "occurrences": 1,
    "username": "teste2",
  },
  Object {
    "occurrences": 5,
    "username": "teste1",
  },
  Object {
    "occurrences": 0,
    "username": "teste 3",
  },
]
当我尝试将每个用户名放在一个单独的视图中时

async function setUsersView() {
    let users;

    try {
      users = await listUserOcurrences(token);
    } catch (e) {
      console.log(e);
    }

    return users?.map((user) => {
      return (
        <View style={styles.userView}>
          <Text style={{ fontSize: 20 }}>
            {"\n"} {users.username}
          </Text>
        </View>
      );
    });
  }
异步函数setUsersView(){
让用户;
试一试{
users=等待列表userocurrences(令牌);
}捕获(e){
控制台日志(e);
}
返回用户?.map((用户)=>{
返回(
{“\n”}{users.username}
);
});
}

我得到以下错误:对象作为React子对象无效。这里的username应该是user.username,map的回调使用参数user not users,这是因为
setUsersView()
async
函数,对渲染无效。函数应该是纯函数,以呈现某些视图。所以你可以这样做:

首先创建一个单状态变量以检查是否提取了用户,例如:

const[isLoadingUsers,setLoadingUserStatus]=useState(false);//功能部件
//类组件
此.state={
isLoadingUsers:false
}
现在,当您开始抓取用户时,将其状态切换为true,并根据其值呈现视图。例如,如果用户正在提取,则可以呈现
ActivityIndicator
或某个占位符,提取完成后显示用户

函数setUsersView(){
setLoadingUserStatus(真);
让用户;
试一试{
users=等待列表userocurrences(令牌);
setLoadingUserStatus(假);
}捕获(e){
控制台日志(e);
}
if(isLoadingUsers){
返回(
)
}
返回用户?.map((用户)=>{
返回(
{“\n”}{users.username}
);
});
}

现在,这是一个简单的函数,错误将消失。

明白了。还有一个问题,我没有使用类。如果我使用你上面使用的类组件,有什么问题吗?如果你想使用类组件,那么你必须使用
this.setState({isLoadingUsers:true})
来修改状态,而不是
setLoadingUserStatus(true)