Визуализировать объект в React

Я хочу отображать «жанры» объекта, но моя консоль возвращается ко мне:

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>})} 

В чем разница между этими двумя вещами?

В этой статье это подробно объясняется akashmittal.com/react-error-objects-not-valid-react-child

Igor Litvinovich 16.12.2020 13:11

Первый возвращает массив объектов ({ genre } создает объект, используя сокращенное имя свойства ). Второй возвращает массив <li>

adiga 16.12.2020 13:11
<div className = "movie">{ genres.join(" ") }</div>
Kalhan.Toress 16.12.2020 13:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
185
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Первый код возвращает объект с ключом «жанр», значение которого является значением жанра, и реакция не может его отобразить.

Второй возвращает значение жанра, потому что фигурные скобки здесь не фигурные скобки объекта, а правильный синтаксис помещения переменных внутри html в реакции.

Если вы хотите вернуть значение без ли, сделайте: {genres.map(genre=> genre)}

Однако это выражение возвращает массив неопределенных значений. жанры.карта(жанр=>{возврат {жанр}})

Igor Litvinovich 16.12.2020 13:13

Это было очень полезно для меня. Большое спасибо.

minami 16.12.2020 13:23
Ответ принят как подходящий

Эта линия

{genres.map(genre=>{returns {genre}})}

возвращает объект из каждого элемента массива: { genre: 'drama' }

Однако эта другая линия

{genres.map(genre=>{returns <li>{genre}</li>})} 

{ внутри JSX для li не превратит его в объект, но получит доступ к его значению: <li>drama</li>

Другие вопросы по теме