【发布时间】:2019-01-15 22:05:23
【问题描述】:
我有一个 React 组件,它接受一个数组并使用预定义的键将其呈现为一个表。
<TableFromJson data={this.props.results.events} rowKey="eventID" />
TableFromJson.js
import React, { Component } from 'react';
import { Table } from 'react-bootstrap';
import PropTypes from 'prop-types';
export class TableFromJson extends Component{
render() {
if (!this.props.data)
return(<p>No data</p>);
const key = this.props.rowKey;
let columns = Object.keys(this.props.data[0]);
let headerComponents = columns.map(col => <th>{col}</th>);
let rowComponents = this.props.data.map((row) =>{
let tdList = columns.map(col => <td>{row[col]}</td>);
let htmlRow = <tr key={row[key]}>{tdList}</tr>;
return htmlRow;
});
return (
<Table bordered hover responsive striped>
<thead>
<tr>{headerComponents}</tr>
</thead>
<tbody>{rowComponents}</tbody>
</Table>
);
}
}
TableFromJson.propTypes = {
data: PropTypes.array,
key: PropTypes.string
}
这会呈现一个如下所示的表格:
tr 元素已经包含键,正如您从上面的 React 开发工具屏幕截图中看到的那样。
每次呈现此组件时,我都会收到键错误(“警告:数组或迭代器中的每个子项都应具有唯一的“键”道具”)。我错过了什么?
【问题讨论】:
-
您应该在数组的每个元素上放置一个键,在这种情况下,即
th、td、tr。 -
@root_access 你的问题解决了吗?如果是这样 - 您可以作为回答/接受答案/或提供一些详细信息做出贡献。否则——所有的努力都是徒劳的!
标签: javascript reactjs