我认为
setState()不做递归合并。
您可以使用当前状态的值
this.state.selected构造一个新状态,然后调用
setState()该状态:
var newSelected = _.extend({}, this.state.selected);newSelected.name = 'Barfoo';this.setState({ selected: newSelected });我在这里使用过函数
_.extend()function(来自underscore.js库),
selected通过创建状态的浅表副本来防止对该状态的现有部分进行修改。
另一种解决方案是编写
setStateRecursively()对新状态进行递归合并,然后对其进行调用
replaceState():
setStateRecursively: function(stateUpdate, callback) { var newState = mergeStateRecursively(this.state, stateUpdate); this.replaceState(newState, callback);}


