如何为RN中的sectionlist创建动态数据源?

时间:2018-01-19 14:44:13

标签: react-native

我目前正在使用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是一个内部有键的数组,而不是我现在拥有的数组。所以我需要找到一种方法将当前对象转换为数组。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:1)

所以我想出了如何用对象将它从对象更改为数组。

let SECTIONS = []
      for (const key in dataSource) {
          if (dataSource.hasOwnProperty(key)) {
              SECTIONS.push({
                  data: dataSource[key],
                  key: key,
              })
          }
}

它解决了我的问题。