Проблема такого рода может быть вызвана тем, что реквизит key
не отображается в элементах списка (т. Е. При чтении предупреждения). Причина, по которой key
важна, заключается в том, что React использует уникальный ключ ключа для каждого элемента для правильного разрешения / определения способа обновления элементов, отображаемых в списке (т. Е. С помощью map()
) во время цикла визуализации.
Один простой способ включить key
пропел - это использовать уникальный «индекс», переданный из обратного вызова карты, следующим образом:
render() {
return (
<div>
{this.state.recipes[0]["recipes"].map((recipe, index) => {
return <Recipe
setRecipeAsSelected={this.setRecipeAsSelected}
selectedRecipe={this.state.selectedRecipe}
recipe={recipe} id={index} key={index }/>
})}
<Generate/>
</div>
)
}
Обновление
Кроме того, причина, по которой вы не видите атрибут onClick
в отображаемом HTML (т. Е. Как это видно в dev-tools), заключается в том, что отображаемый HTML, который показывает dev-tools, не является фактическим JSX, который вы используете. определено в методах render()
вашего компонента.
JSX, который вы определяете, фактически транслируется в javascript за кулисами, и в результате обработчик onClick
присоединяется к соответствующему объекту Node javascript для этого <div />
(это внутренне выполняется через addEventListener()
) , Это делает рендеринг обработчика onClick
в разметку HTML избыточным.
Надеюсь, это поможет!