3 回答
TA贡献1804条经验 获得超2个赞
为了setState
对于嵌套对象,您可以遵循以下方法,因为我认为setState不处理嵌套更新。
var someProperty = {...this.state.someProperty}someProperty.flag = true;this.setState({someProperty})
其思想是创建一个虚拟对象,对其执行操作,然后用更新的对象替换组件的状态
现在,扩展操作符只创建对象的一个级别嵌套副本。如果您的状态是高度嵌套的,例如:
this.state = { someProperty: { someOtherProperty: { anotherProperty: { flag: true } .. } ... } ...}
您可以在每个级别上使用扩展运算符设置State,如
this.setState(prevState => ({ ...prevState, someProperty: { ...prevState.someProperty, someOtherProperty: { ...prevState.someProperty.someOtherProperty, anotherProperty: { ...prevState.someProperty.someOtherProperty.anotherProperty, flag: false } } }}))
然而,随着状态越来越嵌套,上面的语法变得每况愈下,因此我建议您使用immutability-helper
包来更新状态。
TA贡献2003条经验 获得超2个赞
this.setState({ someProperty: { ...this.state.someProperty, flag: false} });
TA贡献1878条经验 获得超4个赞
有时直接回答并不是最好的:)
简短版本:
this.state = { someProperty: { flag: true }}
this.state = { somePropertyFlag: true}
长版:
{ parent: { child1: 'value 1', child2: 'value 2', ... child100: 'value 100' }}
child1
parent
parent
shouldComponentUpdate()
添加回答
举报