zmi*_*mii 4 javascript ecmascript-6 reactjs
当我声明了以下初始状态时:
getInitialState: function() {
return {
isValid: false,
metaData: {
age: 12,
content_type: 'short_url'
}
};
},
Run Code Online (Sandbox Code Playgroud)
我用setState这样更新状态:
...
let newMetaData = { age: 20 };
...
this.setState({
isValid: true,
metaData: newMetaData
});
...
Run Code Online (Sandbox Code Playgroud)
生成的this.state.metadata对象仅定义了年龄.但据我所知,this.setState()将其论证与现有状态合并.为什么它不在这里工作,这不应该是经常合并吗?
有没有办法在React/ES6中将新对象属性合并到状态对象属性?
setState执行浅合并.如果metaData是平的:
this.setState({
metaData: Object.assign({}, this.state.metaData, newMetaData),
});
Run Code Online (Sandbox Code Playgroud)
或者如果使用传播:
this.setState({
metaData: { ...this.state.metaData, ...newMetaData },
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4817 次 |
| 最近记录: |