首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反应中复杂状态的深度融合

反应中复杂状态的深度融合
EN

Stack Overflow用户
提问于 2016-11-15 04:05:15
回答 4查看 8K关注 0票数 7

当我声明了以下初始状态时:

代码语言:javascript
运行
复制
  getInitialState: function() {
    return {
      isValid: false,
      metaData: {
        age: 12,
        content_type: 'short_url'
      }
    };
  },

我用setState更新状态如下:

代码语言:javascript
运行
复制
...
let newMetaData = {  age: 20 };
...
this.setState({
        isValid: true,
        metaData: newMetaData
      });
...

生成的this.state.metadata对象仅定义了年龄。但据我所知,this.setState()将其参数与现有状态合并。为什么它在这里不起作用,这不是应该是经常性的合并吗?

是否有一种方法可以将新对象属性合并为React/ES6?中的状态对象属性

EN

Stack Overflow用户

回答已采纳

发布于 2016-11-15 04:25:54

setState执行浅合并。如果metaData是平面的:

代码语言:javascript
运行
复制
this.setState({
  metaData: Object.assign({}, this.state.metaData, newMetaData),
});

或者如果使用扩散:

代码语言:javascript
运行
复制
this.setState({
  metaData: { ...this.state.metaData, ...newMetaData },
});
票数 8
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40601834

复制
相关文章

相似问题

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