在组件的render函数中,我有:
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>
元素时,出现以下错误:
未捕获的错误:始终违反:对象作为React子对象无效(找到:带有键{dispatchConfig,dispatchMarker,nativeEvent,target,currentTarget,类型,eventPhase,气泡,cancellable,timestamp,defaultPrevented,isTrusted,视图,详细信息,screenX的对象,screenY,clientX,clientY,ctrlKey,shiftKey,altKey,metaKey,getModifierState,按钮,按钮,relatedTarget,pageX,pageY,isDefaultPrevented,isPropagationStopped,_dispatchListeners,_dispatchIDs})。如果您打算渲染孩子的集合,请使用数组代替,或使用React附加组件中的createFragment(object)包装对象。检查的渲染方法
Welcome
。
如果我改变this.onItemClick.bind(this, item)
对(e) => onItemClick(e, item)
地图功能一切正常的内部预期。
如果有人可以解释我做错了什么并解释为什么会出现此错误,那将是很好的
更新1:
onItemClick函数如下,删除this.setState导致错误消失。
onItemClick(e, item) {
this.setState({
lang: item,
});
}
但是我无法删除此行,因为我需要更新此组件的状态
this.onItemClick
实现呢?