React - 如何添加" key"推送到数组时

时间:2016-06-30 18:09:28

标签: javascript reactjs

React v15.1

我正在创建一个包含可变行数的表,具体取决于通过props提供的数据。这就是我的位置(并且工作正常):

getRows = () => {
  const rows = [];

  for (const col in this.props.tableRows) {
    if ({}.hasOwnProperty.call(this.props.tableRows, col)) {
        rows.push(React.cloneElement(this.props.tableRows[col], {}));
    }
  }
  return rows;
}

我正在努力使控制台警告消失。这个旧的最爱出现在Each child in an array or iterator should have a unique "key" prop. Check the render method of 'TableData'.

将一个键添加到我推送到空数组的克隆元素的最佳方法是什么?

OR 有更好的方法来处理动态生成的表行上的数据吗?

这是我在很多地方使用的联系信息的上传对话框。它成功地按预期执行,只需添加一个键......或者使其更好。

2 个答案:

答案 0 :(得分:0)

使用.map函数并渲染JSX可能更有意义,因此您可以轻松地为每个表行指定一个键。

function getRows() {
    const {tableRows} = this.props;

    return tableRows.map((row, index) =>
        <tr key={index}>
            // whatever else you wanted to add inside each row
        </tr>
    );
}

这主要是对您尝试做的事情的猜测 - 如果它不适合您,请发布更详细地描述您的问题的评论,我可以编辑此答案以提供更好的解决方案你。

答案 1 :(得分:0)

@ medet-tleukabiluly有正确的答案:

keyed_items = items.map((item, key) => React.cloneElement(item, {key}))

只要每个项目都是一个元素(而不仅仅是一个字符串)。