首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-table:无法在react-table中插入嵌套json数据

react-table:无法在react-table中插入嵌套json数据
EN

Stack Overflow用户
提问于 2020-07-09 15:40:59
回答 1查看 206关注 0票数 0

这是完整的代码

我有一台react-table。版本6.1.1。我已经在上面的codeSandbox中添加了完整的代码,还在下面添加了相关的代码片段。

我可以为[0] index插值数据,但我无法对所有条目进行插值,这就是问题所在。

就像我为[0] index所做的那样,我希望做一些类似的事情。但是,不确定具体如何实现这一点。

自定义单元格的代码

代码语言:javascript
复制
MyCell({
    value,
    columnProps: {
      rest: { someFunc }
    }
  }) {
    const data = {
      // labels: value.map((val, idx) => {
      //   return idx;
      // }),
      datasets: [
        {
          backgroundColor: [
            "#ff8779",
            "#2a84e9",
            "#e2e2e2",
            "#ff8779",
            "#2a84e9",
            "#e2e2e2"
          ],
          data: value
        }
      ]
    };

    return <Pie data={data} />;
  }

列的代码

代码语言:javascript
复制
  columns = [
    // * embedding checkbox
    {
      Header: "Select",
      Cell: row => (
        <input
          type="checkbox"
          defaultChecked={this.state.checked[row.index]}
          checked={this.state.checked[row.index]}
        />
      )
    },
    {
      Header: "System",
      accessor: "sites[0].systems[0].systemName"
    },
    {
      Header: "Measurement",
      accessor: "sites[0].systems[0].measurements[0].name"
    },
    {
      Header: "Min",
      accessor: "sites[0].systems[0].measurements[0].min"
    },
    {
      Header: "Max",
      accessor: "sites[0].systems[0].measurements[0].max"
    },
    {
      Header: "Avg",
      accessor: "sites[0].systems[0].measurements[0].average"
    },
    {
      Header: "Last",
      accessor: "sites[0].systems[0].measurements[0].last"
    },
    {
      Header: "Bar",
      accessor: "sites[0].systems[0].measurements[0].buckets.values",
      Cell: this.MyCell
    }
  ]; 

render()中的react-table component代码

代码语言:javascript
复制
            <ReactTable
                  className="-striped -highlight"
                  ref={r => (this.reactTable = r)}
                  data={[...measurementsData]}
                  pageSize={
                    measurementsData.length > 10 ? 10 : measurementsData.length
                  }
                  filterable
                  resizable={true}
                  columns={this.columns}
                  showPaginationTop={false}
                  showPaginationBottom={false}
                />
EN

回答 1

Stack Overflow用户

发布于 2020-07-09 16:20:42

您需要编写一个自定义的Cell函数

对不起,我不知道如何“幻想”-flatten数组,所以我在回答您之前的问题时使用了相同的方法

代码语言:javascript
复制
  renderJson(sites, property) {
    let flat = sites.map(md => md.systems);
    flat = [].concat(...flat);
    flat = flat.map(md => md.measurements);
    flat = [].concat(...flat);

    return (
      <div>
        {flat.map(measurement => {
          return (
            <>
              {measurement[property]}
              <br />
            </>
          );
        })}
      </div>
    );
  }

然后

代码语言:javascript
复制
      Cell: row => {
        return this.renderJson(row.original.sites, 'name')
      }
.
.
.
      Cell: row => {
        return this.renderJson(row.original.sites, 'min')
      }
.
.
.
      Cell: row => {
        return this.renderJson(row.original.sites, 'max')
      }

这里是在action https://codesandbox.io/s/stoic-mclaren-kvmpg中查看它的链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62809776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档