У меня есть следующий фрагмент кода, который отлично работает в консоли, но не отображается на экране. Любая помощь приветствуется.
{Object.keys(flags).forEach(product => {
return (
<>
<input
type='checkbox'
className='form-checkbox'
name = {product}
value = {product}
onChange = {this.gatherFormData}
/>
<span className='label'>{product}</span>
</>
);
})}
Ключ продукта не отображается на экране, хотя я прекрасно вижу его в консоли.
Что ж, я буду... переключение .forEach на .map устранило проблему. Мужик, это было просто. Я не знал, что .forEach не будет выводить данные. Спасибо!
@jonrsharpe, можешь превратить свой пост в ответ?
Пожалуйста, выберите ответ



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


Не должно ли быть:
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() не возвращает значение, поэтому этот ответ не решает проблему полностью.
</></> вокруг фрагмента делает то же самое в современной библиотеке React.
@jonrsharpe хорошо!
Возврат внутрь .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;
}
Значение
returned из.forEachравно полностью игнорируется. Вы имели в виду.map?