问题
我收到此警告:
警告:数组或迭代器中的每个孩子都应该有一个唯一的“键”props。检查 EventsTable 的渲染方法。有关更多信息,请参阅fb.me/react-warning-keys。
react-runtime-dev.js?8fefd85d334323f8baa58410bac59b2a7f426ea7:21998 警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”props。检查事件的渲染方法。有关更多信息,请参阅fb.me/react-warning-keys。
来源
这是EventsTable
:
EventsTable = React.createClass({
displayName: 'EventsTable',
render() {
console.dir(this.props.list);
return (
<table className="events-table">
<thead>
<tr>
{_.keys(this.props.list[0]).map(function (key) {
if (key !== 'attributes') {
return <th>{key}</th>;
}
})}
</tr>
</thead>
<tbody>
{this.props.list.map(function (row) {
return (
<Event key={row.WhatId} data={row} />
);
})}
</tbody>
</table>
)
}
});
这是Event
:
Event = React.createClass({
displayName: 'Event',
render() {
return (
<tr>
{_.keys(this.props.data).map((x) => {
if (x !== 'attributes')
return <td>{this.props.data[x]}</td>;
})}
</tr>
)
}
});
问题
显然我已经key
在<Event />
组件上获得了props。我遵循的约定是您应该包含key
在组件中,而不是包含在 HTML 本身(换句话说,Event
组件中的HTML 标签)中。根据官方 React 文档:
键应始终直接提供给数组中的组件,而不是提供给数组中每个组件的容器 HTML 子项:
我很困惑。为什么我会收到警告?