我正在尝试使用这样的嵌套属性来组织我的状态:
this.state = {
someProperty: {
flag:true
}
}
但是像这样更新状态,
this.setState({ someProperty.flag: false });
不起作用。如何正确地做到这一点?
原文由 Alex Yong 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试使用这样的嵌套属性来组织我的状态:
this.state = {
someProperty: {
flag:true
}
}
但是像这样更新状态,
this.setState({ someProperty.flag: false });
不起作用。如何正确地做到这一点?
原文由 Alex Yong 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
为了
setState
嵌套对象,您可以遵循以下方法,因为我认为 setState 不处理嵌套更新。这个想法是创建一个虚拟对象对其执行操作,然后用更新的对象替换组件的状态
现在,展开运算符只创建对象的一级嵌套副本。如果您的状态高度嵌套,例如:
您可以 setState 在每个级别使用扩展运算符,例如
然而,随着状态变得越来越嵌套,上述语法变得越来越难看,因此我建议您使用
immutability-helper
包来更新状态。有关如何使用
immutability-helper
更新状态的信息,请参阅 此答案。