В функции рендеринга моего компонента у меня есть:
render() {
const items = ['EN', 'IT', 'FR', 'GR', 'RU'].map((item) => {
return (<li onClick={this.onItemClick.bind(this, item)} key={item}>{item}</li>);
});
return (
<div>
...
<ul>
{items}
</ul>
...
</div>
);
}
все отрисовывается нормально, однако при нажатии на <li>
элемент я получаю следующую ошибку:
Uncaught Ошибка: Инвариантное Нарушение: Объекты недопустимы как дочерний элемент React (найдено: объект с ключами {dispatchConfig, dispatchMarker, nativeEvent, цель, currentTarget, тип, eventPhase, пузырьки, отменяемый, timeStamp, defaultPrevented, isTrusted, просмотр, детализация, screenX) , screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, кнопка, кнопки, relatedTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListeners, _dispatchIDs}). Если вы намеревались визуализировать коллекцию дочерних элементов, используйте вместо этого массив или оберните объект с помощью createFragment (object) из дополнений React. Проверьте метод визуализации
Welcome
.
Если я изменяю , this.onItemClick.bind(this, item)
чтобы (e) => onItemClick(e, item)
внутри функции карты все работает , как ожидалось.
Если бы кто-то мог объяснить, что я делаю неправильно, и объяснить, почему я получаю эту ошибку, было бы здорово
ОБНОВЛЕНИЕ 1:
функция onItemClick выглядит следующим образом, и удаление this.setState приводит к исчезновению ошибки.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Но я не могу удалить эту строку, так как мне нужно обновить состояние этого компонента
this.onItemClick
это реализовано?