为了账号安全,请及时绑定邮箱和手机立即绑定

React 中的 insertRow() 和 appendChild() 等效

React 中的 insertRow() 和 appendChild() 等效

开满天机 2021-09-30 16:47:55
我正在尝试在 React 中使用此代码:export const JsonToTable = (jsonArr) => {var cols = [];for (var i = 0; i < jsonArr.length; i++) {    for (var key in jsonArr[i]) {        if (cols.indexOf(key) === -1) {            cols.push(key);        }    }}var table = document.createElement("table");var tr = table.insertRow(-1);             for (var i = 0; i < cols.length; i++) {    var th = document.createElement("th");     th.innerHTML = cols[i];    tr.appendChild(th);} for (var i = 0; i < jsonArr.length; i++) {     tr = table.insertRow(-1)     for (var j = 0; j < cols.length; j++) {         var tabCell = tr.insertCell(-1);         tabCell.innerHTML = jsonArr[i][cols[j]];     } } return table;}但是 React 抱怨这些方法:insertRow()appendChild()innerHTML我知道innerHTML 的等价物是dangerouslySetInnerHTML 但我不想使用它。如果我按原样运行此代码,则会得到返回的对象(表)不是 React 类型的错误。如何将此函数编写为 React 组件?我想要实现的是从 json 动态创建一个表。如果有另一种方法可以实现这一点,我也可以研究一下。谢谢。
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

将要在表格中呈现的数据放入组件的状态。


当你想改变它时,改变状态。


render 函数会自动更新 DOM。


就此而言,因为看起来您并没有在内部对其进行更改……只需将解析后的 JSON 作为道具传递即可。


您甚至可以使用函数组件。


const Table = ({ array }) => (<table><tbody>{array.map(generateRow)}</tbody></table>);

const generateRow = rowData => (<tr>{rowData.map(generateCell)}</tr>);

const generateCell = cellData => (<td>{cellData}</td>);


查看完整回答
反对 回复 2021-09-30
  • 1 回答
  • 0 关注
  • 455 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信