每当React类具有一个或包含数组的状态对象时,更新该状态会感觉很尴尬。通常我做的是
var newArrayThing = _.clone(this.state.arrayThing); //or slice()
newArrayThing[123] = 42; //update stuff
this.setState({arrayThing: newArrayThing});
是否有更好或更优雅的处理方法我不知道了?特别是因为如果阵列很大并且变化很小,我总觉得这是不必要的慢。所有这些都是为了简单的改变而复制但是国家不应该直接编辑似乎是口头禅。
Facebook文档提到了Immutability Helpers,但它们似乎比这更加遥远。
答案 0 :(得分:5)
这是一种非常惯用的方法但是如果你担心克隆大型数组,那么你一定要查看你提到的update helper,它并不是那么糟糕:
this.setState({
arrayThing: React.addons.update(this.state.arrayThing, {123: {$set: 42}})
})