代码之家  ›  专栏  ›  技术社区  ›  Itsik Mauyhas

完全动态地从JSON创建表

  •  0
  • Itsik Mauyhas  · 技术社区  · 6 年前

    我想从JSON数组创建整个表,包括动态 th s,因此a将头部分离到:

    import React from 'react';
    import TableDataTR from './TableTRView';
    const TableView = ({ thds, tableData }) => {
        if (!thds) {
            return <table></table>;
        }
        return (
            <div>
                <table>
                    <thead>
                        <tr>
                            {thds.map((data, i) => <th key={i}>{data.th}</th>)}
                        </tr>
                    </thead>
                    <TableDataTR tableData={tableData}/>
                </table>
    
            </div>
        )
    }
    export default TableView;
    

    桌子印的是头部,但我在打印我的 tbody :

    import React, { Component } from 'react';
    
    class TableDataTR extends Component {
        render() {
    
           let rows = this.props.tableData.map((currElement, index) =>{
               return(
                <tr key={index}>
                    <td>currElement[index]</td>
                </tr>
               ) 
           });
    
    
            return (
                <tbody>{rows}</tbody>
            );
          }
    }
    export default TableDataTR;
    

    示例数据,表头

    thds : [ { th: 'th1' },
            { th: 'th2' }]
    
    tableData:[ { tdData1: 'somedata', tdData2: 'somedata2' },
                { tdData1: 'somedata', tdData2: 'somedata2' },]
    

    桌面工作正常,但是里面的数据 表格主体 完全不显示。

    最后的目标是获取任意2个数组并相应地显示表。

    2 回复  |  直到 6 年前
        1
  •  0
  •   devserkan    6 年前

    <td>..</td> {}

    <tr key={index}>
        <td>
            {
                Object.keys(currElement).map(key => currElement[key])
            }
        </td>
    </tr>
    
        2
  •  1
  •   Harikrishnan    6 年前

    let rows = this.props.tableData.map((currElement, index) => {
          return (
          <tr>
              { Object.keys(currElement).map((item) =>
              (
                <td>{currElement[item]}</td>
         )
           )}
          </tr>   
          )
        });