Я хочу отображать «жанры» объекта, но моя консоль возвращается ко мне:
Error: Objects are not valid as a React child (found: object with keys {genre}).
If you meant to render a collection of children, use an array instead.
Мой код
function Movie({title,summary,year,poster,genres}){
return(
<div className = "movie">
{genres.map(genre=>{return {genre}})} //doesn't work
{genres.map(genre=>{return <li>{genre}</li>})}
</div>
)
}
первый код
{genres.map(genre=>{returns {genre}})}
не работает
Но второй код ниже работает хорошо.
{genres.map(genre=>{returns <li>{genre}</li>})}
В чем разница между этими двумя вещами?
Первый возвращает массив объектов ({ genre } создает объект, используя сокращенное имя свойства ). Второй возвращает массив <li>
<div className = "movie">{ genres.join(" ") }</div>


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


Первый код возвращает объект с ключом «жанр», значение которого является значением жанра, и реакция не может его отобразить.
Второй возвращает значение жанра, потому что фигурные скобки здесь не фигурные скобки объекта, а правильный синтаксис помещения переменных внутри html в реакции.
Если вы хотите вернуть значение без ли, сделайте: {genres.map(genre=> genre)}
Однако это выражение возвращает массив неопределенных значений. жанры.карта(жанр=>{возврат {жанр}})
Это было очень полезно для меня. Большое спасибо.
Эта линия
{genres.map(genre=>{returns {genre}})}
возвращает объект из каждого элемента массива: { genre: 'drama' }
Однако эта другая линия
{genres.map(genre=>{returns <li>{genre}</li>})}
{ внутри JSX для li не превратит его в объект, но получит доступ к его значению: <li>drama</li>
В этой статье это подробно объясняется akashmittal.com/react-error-objects-not-valid-react-child