当我声明以下初始状态时:
getInitialState: function() { return { isValid: false, metaData: { age: 12, content_type: 'short_url' } }; },
我用setState这样更新状态:
setState
... let newMetaData = { age: 20 }; ... this.setState({ isValid: true, metaData: newMetaData }); ...
结果this.state.metadata对象仅定义了年龄。但据我所知,this.setState()将其参数合并到现有状态。为什么它在这里不起作用,这不是应该经常合并吗?
this.state.metadata
this.setState()
有没有办法在React / ES6中将新对象属性合并为状态对象属性?
setState执行浅合并。如果metaData是平坦的:
this.setState({ metaData: Object.assign({}, this.state.metaData, newMetaData), });
或者使用点差:
this.setState({ metaData: { ...this.state.metaData, ...newMetaData }, });