我使用平面列表显示数据,作为回应,我得到了一些数据。
但是,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子对象无效。
答案 0 :(得分:1)
对于FlatList
,data
属性需要一个数组,如突出显示的in the docs。由于FlatList
通过获取项目列表并为每个项目渲染单独的行来工作,因此data
属性必须是一个数组。
一旦收到JSON数据,我建议您仅将所需的数组传递给FlatList,例如:
<FlatList
data={myResponse.listOfItems}
...
/>
myResponse
是您的JSON对象,listOfItems
是您的项目数组。
此外,根据文档,没有dataSource
属性,正确的属性只是data
。