Проблема
Я получаю это предупреждение:
Предупреждение: каждый дочерний элемент в массиве или итераторе должен иметь уникальную "ключевую" опору. Проверьте метод рендеринга EventTable. Подробнее см. fb.me/react-warning-keys.
response-runtime-dev.js? 8fefd85d334323f8baa58410bac59b2a7f426ea7: 21998 Внимание: каждый дочерний элемент в массиве или итераторе должен иметь уникальную "ключевую" опору. Проверьте способ рендеринга события. Подробнее см. 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 />
. И я согласен с тем, что вы должны включать key
в компонент, а не сам HTML (другими словами, теги HTML в компоненте Event
). В официальных документах React:
Ключ должен всегда предоставляться непосредственно компонентам в массиве, а не содержимому HTML-контейнера каждого компонента в массиве:
Я сильно смущен. Почему я получаю предупреждения?