首页 > 解决方案 > Visjs/React:动态构建数据集

问题描述

我正在从服务器请求数据,然后尝试将其分配给items. console.log 显示正确的数据,但出现错误:Failed prop type: Invalid props 'items' of type 'object supplied to Timeline, expected array'. I thoughtitems.add` 将数据集转换为数组?

var items = new vis.DataSet();
items.add(data.abs.map(a, index) => ({
  id: index + 1, 
  content: a.Ent, 
  start: a.time, 
  title: a.Trc, 
  end: null
})));

数据:

"data": {
  "abs": [
    {
      "Ent": "Changed",
      "time": 1499348050000,
      "Trace": [
        {
          "filename": "C:/Users/Public/Desktop/word.doc"
        }
      ]  
    }

标签: javascriptreactjsvis.jsvis.js-networkvis.js-timeline

解决方案


根据vis.dataset 文档add不转换数据集,它只返回添加项目的 id 数组。在您的代码示例中,变量items实际上数据集对象本身。当您调用items.add(...该表达式时,确实会返回一个数组,但您不会捕获它。我假设您将项目作为道具传递,它仍然是数据集对象,但您可以使用该::map函数,它返回一个数组。


推荐阅读