Как создать таблицу из списков, используя ReactJS? - PullRequest
0 голосов
/ 24 декабря 2018

Моя цель - создать следующую HTML-таблицу из списка строк ([1, 2, 3]) и списка столбцов ([1, 2]) с использованием ReactJS:

<table>
<tr>
 <td>1</td>
 <td>2</td>
 </tr>
 <tr>
  <td>1</td>
 <td>2</td>
 </tr>
  <tr>
   <td>1</td>
   <td>2</td>
  </tr>
</table>

Ниже приведен мой сценарий React, а здесь - мой код , который, похоже, не работает

 class Tbody extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          columns: [1, 2],
          rows: [1, 2, 3]
        };
      }

      renderCols() {
        return (
          {this.state.columns.map(col => <td key={col}> {col} </td>)}
        );
      }

      renderRows(){
       return (
         {this.state.rows.map(row => <tr key={row}> {this.renderCols()} </tr>)}
        );
      }

      render() {
        return <tbody>{this.renderRows()}</tbody>;
      }
    }

    class Table extends React.Component {
      render() {
        return (
          <div>
            <table>
            <Tbody />
             </table>
          </div>
        );
      }
    }

    ReactDOM.render(<Table />, document.getElementById("root"));

1 Ответ

0 голосов
/ 24 декабря 2018

Ваш метод renderCols и renderRows возвращает JSX .Вместо этого верните оттуда только простые объекты JS, удалите эти {..}.

class Tbody extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      cols: [1, 2],
      rows: [1, 2, 3]
    };
  }

  renderCols() {
    
    return (
      this.state.cols.map(col => <td key={col}>{col}</td>)
    );
  };

  renderRows(){
   return (
     this.state.rows.map(row => <tr key={row}>{this.renderCols()}</tr>)
    );
  }
  
  render() {
    return <tbody>{this.renderRows()}</tbody>;
  }
}

class Table extends React.Component {
  render() {
    return (
      <div>
        <table>
        <Tbody />
         </table>
      </div>
    );
  }
}

ReactDOM.render(<Table />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id="root"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...