在我的组件的呈现函数中,我有:
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,type,eventPhase,bubbles,cancelable,timeStamp,defaultPrevented,isTrusted,view,detail,screenX,screenY,clientX,clientY,ctrlKey,shiftKey,altKey,metaKey,getModifierState,button,buttons,relatedTarget,#EN19#,#EN20#,#EN21#,#EN22#,#EN23#,#EN24#})。如果要渲染子对象的集合,请使用数组,或者使用React附加组件中的createFragment( object )包装对象。检查
Welcome的render方法。
如果我在map函数中将this.onItemClick.bind(this, item)改为(e) => onItemClick(e, item),一切都会正常工作。
如果有人能解释我做错了什么,并解释为什么我会得到这个错误,那就太好了
更新1:
onItemClick函数如下所示,删除this.setState会导致错误消失。
onItemClick(e, item) {
this.setState({
lang: item,
});
}但我不能删除此行,因为我需要更新此组件的状态
发布于 2018-08-23 19:01:58
我也有同样的问题,但我的错误太愚蠢了。我试图直接访问object。
class App extends Component {
state = {
name:'xyz',
age:10
}
render() {
return (
<div className="App">
// this is what I am using which gives the error
<p>I am inside the {state}.</p>
//Correct Way is
<p>I am inside the {this.state.name}.</p>
</div>
);
}
}https://stackoverflow.com/questions/33117449
复制相似问题