相关疑难解决方法(0)

不变违规:对象作为React子对象无效

在我的组件的渲染功能中,我有:

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>
    );
  }
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是当点击<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,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,
    });
}
Run Code Online (Sandbox Code Playgroud)

但我无法删除此行,因为我需要更新此组件的状态

javascript reactjs

296
推荐指数
17
解决办法
39万
查看次数

标签 统计

javascript ×1

reactjs ×1