Каждый ребенок в списке должен иметь уникальный "ключ" prop error с uuid в качестве ключевой реакции
Я получаю сообщение "Each child in the list should have a unique "key" prop." в консоли конкретно здесь (он цитирует первую строку как соответствующую строку)
<Dropdown.Menu variant="dark">
{[
[0, "prod_name", "Name"],
[1, "price", "Price"],
[2, "average_rating", "Rating"],
].map((item, i) => (
<>
<Dropdown.Item
as={Button}
key={uuid.v4()}
onClick={() => {
this.setState({ sort: item[0], open: false });
this.context.sort(item[1], "asc");
}}
className={
this.state.sort === item[0]
? "text-black giBold active"
: "text-light"
}
>
{item[2] + " (ascending)"}
</Dropdown.Item>
<Dropdown.Item
as={Button}
key={uuid.v4()}
onClick={() => {
this.setState({ sort: item[0] + 3, open: false });
this.context.sort(item[1], "desc");
}}
className={
this.state.sort === item[0] + 3
? "text-black giBold active"
: "text-light"
}
>
{item[2] + " (descending)"}
</Dropdown.Item>
</>
))}
</Dropdown.Menu>;
Я изменил ключ на uuid, так как понял, что тонны id разных элементов будут одинаковыми, в надежде, что это исправит ошибку, но она продолжает появляться.
Есть ли здесь что-то еще в игре, что я упустил, я пытался искать ответы, но не смог ничего найти.
О, вам просто нужно добавить ключ к <>
, потому что свойство key должно быть в первом теге в секции render функции map
и изменить пустой тег на <div>
или <React.Fragment>
, потому что пустой тег не может иметь никакого свойства.
Ваш код должен выглядеть следующим образом;
[...].map((item, i) => (
<div key={uuid.v4()}> // this tag's key important for map function
<Dropdown.Item
as={Button}
key={uuid.v4()}
...
>
{item[2] + " (ascending)"}
</Dropdown.Item>
<Dropdown.Item
as={Button}
key={uuid.v4()}
...
>
{item[2] + " (descending)"}
</Dropdown.Item>
</div>
))}
</Dropdown.Menu>;