Возврат Object.keys(obj) не отображается на экране

У меня есть следующий фрагмент кода, который отлично работает в консоли, но не отображается на экране. Любая помощь приветствуется.

{Object.keys(flags).forEach(product => {
    return (
        <>
            <input
                type='checkbox'
                className='form-checkbox'
                name = {product}
                value = {product}
                onChange = {this.gatherFormData}
            />
            <span className='label'>{product}</span>
        </>
    );
})}

Ключ продукта не отображается на экране, хотя я прекрасно вижу его в консоли.

Значение returned из .forEach равно полностью игнорируется. Вы имели в виду .map?

jonrsharpe 11.03.2019 21:52

Что ж, я буду... переключение .forEach на .map устранило проблему. Мужик, это было просто. Я не знал, что .forEach не будет выводить данные. Спасибо!

pingeyeg 11.03.2019 21:55

@jonrsharpe, можешь превратить свой пост в ответ?

pingeyeg 11.03.2019 23:27

Пожалуйста, выберите ответ

jsdeveloper 12.03.2019 10: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) для оценки ваших знаний,...
0
4
43
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Не должно ли быть:

return (
    <div> // needs an element wrapper
        <input
            type='checkbox'
            className='form-checkbox'
            name = {product}
            value = {product}
            onChange = {this.gatherFormData}
        />
        <span className='label'>{product}</span>
    </div>
);

Как говорит jonrsharpe, вам также нужно использовать карту (forEach просто перебирает значения, но ничего не возвращает)

{Object.keys(flags).map(product => {
.forEach() не возвращает значение, поэтому этот ответ не решает проблему полностью.
idream1nC0de 11.03.2019 21:54

</></> вокруг фрагмента делает то же самое в современной библиотеке React.

pingeyeg 11.03.2019 21:54

@jonrsharpe хорошо!

jsdeveloper 11.03.2019 21:59

Возврат внутрь .forEach ничего не делает либо поместите данные в массив, чтобы использовать их позже, либо вместо этого вернитесь из метода .map

Вот пример, если вам нужно использовать .forEach, как в вашем вопросе...

{
const products = [];
Object.keys(flags).forEach(product => {
  products.push (
    <>
        <input
            type='checkbox'
            className='form-checkbox'
            name = {product}
            value = {product}
            onChange = {this.gatherFormData}
        />
        <span className='label'>{product}</span>
    </>
  );
})
return products;
}

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