javascript - React : Warning: validateDOMNesting(. ..): 文本节点不能作为 <tbody> 的子节点出现

标签 javascript reactjs jsx

我正在尝试用 React 中的数据填充表格,但是我遇到了上述错误。

这是填充表格的函数:

let numberOfColumns = props.tabColumns.split(",").length;
let tableData = props.tabRows.split(",");

function generateRows(){
  let r = ``;
  for (let i=0; i<tableData.length/numberOfColumns; i++){
    r =`${r}<tr>`;
    for(let j=0; j<numberOfColumns; j++){
      r = `${r}<td>${tableData[i*numberOfColumns+j]}</td>`;
    }
    r =`${r}</tr>`;
  }
  console.log(r);
  return r;
}

这是表格:

<table>
  <tbody>
    <tr>
      {props.tabColumns.split(",").map((column, index) => <th key={"column"+index}>{column}</th>)}
    </tr>
    {generateRows()}
  </tbody>
</table>

数据:

tabColumns: "Name,Age,Occupation",
tabRows: "John,18,Student," +
  "Miranda,23,Nurse," +
  "Ashley,32,Telephonist," +
  "Rose,28,Driver"

结果如下: result 问题出在 generateRows 函数的某处。罪魁祸首是什么?提前致谢。

最佳答案

除非你确实需要,否则不要将 React 渲染与手动 html 构建混合使用。它首先消除了使用 React 的好处。使用 React 呈现您的行!

function renderRow(tableData, numberOfColumns, i) {
  const cells = [];
  for (const j = 0; j < numberOfColumns; ++j) {
    cells.push(<td>tableData[i*numberOfColumns+j]</td>);
  }

  return <tr>{cells}</tr>;
}

render() {
  const rows = [];
  for (let i = 0; i < tableData.length / numberOfColumns; ++i) {
    rows.push(renderRow(tableData, numberOfColumns, i);
  }

  return (
    <table>
      <tbody>
        <tr>
          {props.tabColumns.split(",").map((column, index) => <th key={"column"+index}>{column}</th>)}
        </tr>
        {rows}
      </tbody>
    </table>
  );
}

关于javascript - React : Warning: validateDOMNesting(. ..): 文本节点不能作为 <tbody> 的子节点出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56956391/

相关文章:

javascript - 无法在 react jsx 值 Prop 中重复十六进制 html 实体

photoshop - "Console.log"与 Photoshop 脚本 - ExtendScript 工具包

javascript - Angular 2 : Mix Typescript, JavaScript 和 Dart

JavaScript 播放音频一个又一个 HTML5

javascript - React.js - 在点击事件中查找映射元素的 ID

javascript - 为什么将未定义的 react Prop 传递给子组件?

javascript - 如何从 React 中的另一个静态方法调用静态方法?

javascript - 导航不会在滚动时改变大小

javascript - 是否有可能将图像切割成可以用 d3 (jquery) 移动的形状

reactjs - 我应该使用 Redux store.subscribe() 还是用react-redux <Provider> 包装我的应用程序?