对于FlatList,JSON响应必须始终以[]开头是强制性的吗?

时间:2018-08-01 10:15:39

标签: react-native react-native-android react-native-ios

我使用平面列表显示数据,作为回应,我得到了一些数据。

但是,json响应字符串以{}大括号开头,而不是以[]括号开头。

所以,出现以下错误:

不变违反:尝试获取超出范围索引Nan的帧

完成日志后,我从FlatList的dataSource中得到的是[Object Object]

我已经检查了邮递员中的json响应,例如: {{[]}} ,总之它不是以[]括号开头。

因此,在这里,对于FlatList是否必须强制以[]括号开头的dataSource或json响应感到困惑。

如果不是,那么错误的根源可能是什么?如果是,该如何将其转换为所需格式?

谢谢。

编辑

这样做:

 .then((response) => response.json())
      .then((responseJson) => {

        this.setState({ isLoading: false,dataSource: responseJson.screen_details})

      })
      .catch((error) => {
        console.error(error);
      });

但是,对象仍然存在问题。对象作为React子对象无效。

1 个答案:

答案 0 :(得分:1)

对于FlatListdata属性需要一个数组,如突出显示的in the docs。由于FlatList通过获取项目列表并为每个项目渲染单独的行来工作,因此data属性必须是一个数组。

一旦收到JSON数据,我建议您仅将所需的数组传递给FlatList,例如:

<FlatList
    data={myResponse.listOfItems}
    ...
    />

myResponse是您的JSON对象,listOfItems是您的项目数组。

此外,根据文档,没有dataSource属性,正确的属性只是data