ReactJS - ничего не было возвращено от рендера

Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.

У меня проблема, связанная с этим сообщением. Это мой компонент, который вызывает ошибку:

import React from 'react';
import Thumbnail from './Thumbnail';

const AlbumList = ({ results }) => {
  let collections = [];
  let albums = { };

Object.values(results).map((item, i) => {
  if (!collections.includes(item.collectionId)) {
    collections.push(item.collectionId);
    albums[i] = {id: item.collectionId, cover: item.artworkUrl100}
  }
return albums;
});

Object.values(albums).forEach(element => {
 return (
  <Thumbnail source = {element.cover} />
  )
 })
}

export default AlbumList;

Миниатюра - это просто базовый компонент, например:

import React from 'react';

const Thumbnail = ({source}) =>  {
  return(
    <div>
      <img src = {source} alt = "album cover"/>
    </div>
 )
}

export default Thumbnail;

Я искал ошибку около часа. Что мне не хватает?

Вы неправильно используете .map() и .forEach. С .map() вы ожидаете получить от него что-то взамен, в то время как с .forEach() вы ожидаете что-то в нем сделать.

kit 11.11.2018 16:39

Как вы думаете, какое значение возвращает функция AlbumList? В области действия функции AlbumList нет оператора возврата. Функции обратного вызова forEach не должны ничего возвращать.

Håken Lid 11.11.2018 16:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
2
6 984
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание, что map возвращает список, а forEach возвращает undefined.

Вы ничего не возвращаете из своего функционального компонента. Плюс forEach ничего не возвращает, вместо этого меняет его на карту.

Также вам нужно установить уникальный ключ для компонента Thumbnail в цикле

return Object.values(albums).map((element, index) => {
 return (
  <Thumbnail key = {"Key-"+index} source = {element.cover} />
  )
 })

Предлагаю прочитать эту статью карта против forEach

Я обновил ваш ответ, добавив ключ к компоненту Thumbanail, иначе будет отображаться только один

Hemadri Dasari 11.11.2018 18:04

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