0

我正在使用 flatlist 来显示数据,作为回应,我得到了一些数据。

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

因此,出现以下错误:

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

做日志后,我在 FlatList 的数据源中得到了什么[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 子级无效的问题。

4

1 回答 1

1

对于属性需要一个数组,如docs 中突出显示的FlatList那样。由于通过获取项目列表并为每个项目呈现单独的行来工作,因此该属性需要是一个数组。dataFlatListdata

收到 JSON 数据后,我建议只将所需的数组传递给 FlatList,例如:

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

myResponse您的 JSON 对象在哪里,listOfItems您的项目数组在哪里。

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

于 2018-08-01T10:29:21.717 回答