У меня проблема с консолью Each child in a list should have a unique "key" prop., которая мешает моей тележке. Я создал ее копию https://codesandbox.io/s/quiet-http-8yhkp
import React,{useState, useEffect, useContext} from 'react'
import './Home.css'
import Books from './Books'
import { BookContext } from "../../context/books";
const Home = () => {
const {data, handleSelectCategory, currentSelectedCategory } =useContext(BookContext)
return (
<div className='books__container' >
<h1 className='categories'>Categories</h1>
{Object.keys(data).map((key, index)=>{
let books = data[key];
return (
<>
<span key = {key} onClick = {() => handleSelectCategory(key)} className='books__list' >
{books[0].category}
</span>
</>
);})}
<Books category = {currentSelectedCategory} />
</div>
)
}
export default Home
вы получаете ошибку, потому что, когда вы используете карту, вы помещаете ключ в диапазон, но у вас есть диапазон, окруженный фрагментом .... например, этот <> span с ключом здесь </> Избавьтесь от тегов фрагментов, которые вы не используете они мне не нужны
Ключи могут быть предоставлены React.Fragment (не его сокращению), но в вашем коде вы можете удалить фрагмент. См. Этот ответ, чтобы понять ключи: stackoverflow.com/a/66703936/2873538
@ Он забыл сохранить код, мой плохой



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам необходимо предоставить ключ к самому внешнему элементу JSX. Вы также можете
<> </> (лучший выбор)return (
<span key = {key} onClick = {() => handleSelectCategory(key)} className='books__list' >
{books[0].category}
</span>
)
React.Fragment, чтобы применить ключевую опоруreturn (
<React.Fragment key = {key}>
<span key = {key} onClick = {() => handleSelectCategory(key)} className='books__list' >
{books[0].category}
</span>
</React.Fragment>
)
В вашем CodeSandbox отсутствует часть "код"