首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不变冲突:对象作为React子级无效

不变冲突:对象作为React子级无效
EN

Stack Overflow用户
提问于 2015-10-14 13:43:57
回答 46查看 725.6K关注 0票数 459

在我的组件的呈现函数中,我有:

代码语言:javascript
运行
复制
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会导致错误消失。

代码语言:javascript
运行
复制
onItemClick(e, item) {
    this.setState({
      lang: item,
    });
}

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

EN

Stack Overflow用户

发布于 2018-08-23 19:01:58

我也有同样的问题,但我的错误太愚蠢了。我试图直接访问object。

代码语言:javascript
运行
复制
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>
        );
    }                                                                             

}
票数 8
EN
查看全部 46 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33117449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档