Повторно использовать компонент React в функции карты

Я сомневаюсь, что делаю это правильно, возвращая компонент в итерации карты. Как я могу улучшить код или есть лучший способ сделать это? (хотя мой код работает)

https://codesandbox.io/s/5yzqy6vyqx

Родитель

function App() {
  return (
    <div className = "App">
      {[
        {
          name: "banana",
          count: 3
        },
        {
          name: "apple",
          count: 5
        }
      ].map(({ name, count }) => {
        return <List name = {name} count = {count} />;
      })}
    </div>
  );
}

Компонент списка

const List = ({ name, count }) => {
  return (
    <li>
      {name}: {count}
    </li>
  );
};

Я думаю, что этот ответ лучше разместить на codereview.stackexchange.com

Martin Meeser 21.11.2018 15:20
Поведение ключевого слова "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) для оценки ваших знаний,...
1
1
237
2

Ответы 2

Упростите вот так.

function App() {
  return (
    <div className = "App">
    <ul>
      {[
        {
          name: "banana",
          count: 3
        },
        {
          name: "apple",
          count: 5
        }
      ].map(({ name, count }) => <li>{name}:{count} </li>)}
      </ul>
    </div>
  );
}

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

Индекс не рекомендуется в качестве ключа, но в худшем случае мы можем.

Также добавьте элемент ul, чтобы li отображался под ul

Код ниже был улучшен с добавлением ключа, ul и функции .map без возврата

    function App() {
         return (
              <div className = "App">
                <ul>
                 {[
                    {
                       id: 1
                       name: "banana",
                       count: 3
                    },
                    {
                     id:2,
                     name: "apple",
                     count: 5
                    }
                   ].map(({ id, name, count }) => (
                     <List key = {id} name = {name} count = {count} />;
                ))}
              </ul>
            </div>
           );
      }

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