0

我正在尝试使用以下库创建一个嵌套表:react-table-6,其输入 JSON 数据如下所示:

const jsonData =  { 
  "age": "10",
  "lastname": "donut",
  "firstname": "Cake",
  "visit": 3,
  "subops": [
    {
      "firstname": "hem",
      "lastname": "Regular",
      "age": "10",
      "visit": 3,
      "subops": [
    {
      "firstname": "hem",
      "lastname": "Regular",
      "age": "10",
      "visit": 3,
      "subops": []
    },
    {
      "firstname": "hem",
      "lastname": "Regular",
      "age": "10",
      "visit": 3,
      "subops": []
    },
    {
      "firstname": "hem",
      "lastname": "Regular",
      "age": "10",
      "visit": 3,
      "subops": []
    }
  ]
    },
    {
      "firstname": "hem",
      "lastname": "Regular",
      "age": "10",
      "visit": 3,
      "subops": []
    },
    {
      "firstname": "hem",
      "lastname": "Regular",
      "age": "10",
      "visit": 3,
      "subops": []
    }
  ]
};

从数据中可以看出,子操作具有需要在嵌套表中显示的子行,应该如下所示: 示例结果

我很困惑我应该如何编写递归函数,以便得到如下所示的 JSX:

<div>
          <ReactTable
            data={tabledata}
            columns={columns}
            pageSize={20}
          //  className="-striped -highlight"
            SubComponent={(row) => {
              return (
                <ReactTable
                  data={tabledata}
                  columns={columndata}
                  // TheadComponent={() => null}
                  defaultPageSize={3}
                  showPagination={false}
                  SubComponent={(row) => {
                    return (
                      <ReactTable
                        data={tabledata}
                        columns={columndata}
                        //TheadComponent={() => null}
                        defaultPageSize={3}
                        showPagination={false}
                      />
                    );
                  }}
                />
              );
            }}
          />
</div>

如果我知道需要嵌套的级别,这会给我正确的输出,但是在我不知道嵌套级别数的 JSON 的情况下,我需要编写一个递归函数,但是我无法包装我对递归和反应组件的看法

方法 1:我尝试编写此递归代码,但它多次粘贴反应表本身

const RecursiveComponent = (data) => {
    console.log("third", data.data.length, data.data, Array.isArray(data.data));
    if (data.data.length === 0) {
        return null;
      }
    else{
        for (let i = 0; i < data.data.length; i++) {
            console.log("i ", i);
           <RecursiveComponent
            data = {data.data[i]["subops"]}/>
            //console.log(data.data[i], "hello");
            var temp = [data.data[i]];
            return(
                    <ReactTable
                    data={temp}
                    columns={columns}
                    pageSize={5}
                    showPagination={false}
                    SubComponent={(row) => {
                    return (
                        <RecursiveComponent
                            data = {data.data[i]["subops"]}/>
                        );

                    }}
                />
            );
        }
    }
}
4

0 回答 0