我目前正在使用sectionlist创建一个带有标题的列表,但我正在努力使用dataSource。
Object {
"A": Array [
Object {
"fid": "2",
"name": "Manage",
"posts": "1",
"threads": "1",
"todayposts": "1",
},
],
"B": Array [
Object {
"fid": "36",
"name": "Anime",
"posts": "1",
"threads": "1",
"todayposts": "1",
},
Object {
"fid": "37",
"name": "Novel",
"posts": "2",
"threads": "2",
"todayposts": "2",
},
],
}
这些是从服务器获取的数据,它们是对象,所以现在我必须将这些数据传输到一个可以被section list接受的结构,否则,我收到一条错误消息,如
TypeError:props.section.reduce is not a function.(In 'props.sections.reduce(function(v,section){
stickyHeaderIndices.push(v+offset);
return v + section.data.length +2;
},0)','props.sections.reduce' is undefined)
所以我尝试的是,使用for循环创建一个新数组,但似乎我失败了。
更新
<SectionList
sections={dataSource}
/&GT;
很明显我需要一个dataSource是一个内部有键的数组,而不是我现在拥有的数组。所以我需要找到一种方法将当前对象转换为数组。
任何人都可以帮我吗?
答案 0 :(得分:1)
所以我想出了如何用对象将它从对象更改为数组。
let SECTIONS = []
for (const key in dataSource) {
if (dataSource.hasOwnProperty(key)) {
SECTIONS.push({
data: dataSource[key],
key: key,
})
}
}
它解决了我的问题。