gpt4 book ai didi

javascript - 如何在 React 中更新嵌套状态属性

转载 作者:IT老高 更新时间:2023-10-28 13:12:38 24 4
gpt4 key购买 nike

我正在尝试使用这样的嵌套属性来组织我的状态:

this.state = {
someProperty: {
flag:true
}
}

但是像这样更新状态,

this.setState({ someProperty.flag: false });

不起作用。如何正确地做到这一点?

最佳答案

为了 setState 嵌套对象,您可以遵循以下方法,因为我认为 setState 不处理嵌套更新。

var someProperty = {...this.state.someProperty}
someProperty.flag = true;
this.setState({someProperty})

这个想法是创建一个虚拟对象对其执行操作,然后用更新的对象替换组件的状态

现在,展开运算符只创建对象的一层嵌套副本。如果您的状态高度嵌套,例如:

this.state = {
someProperty: {
someOtherProperty: {
anotherProperty: {
flag: true
}
..
}
...
}
...
}

您可以在每个级别使用扩展运算符设置状态,例如

this.setState(prevState => ({
...prevState,
someProperty: {
...prevState.someProperty,
someOtherProperty: {
...prevState.someProperty.someOtherProperty,
anotherProperty: {
...prevState.someProperty.someOtherProperty.anotherProperty,
flag: false
}
}
}
}))

然而,随着状态变得越来越嵌套,上述语法变得越来越难看,因此我建议您使用 immutability-helper包来更新状态。

this answer关于如何使用 immutability-helper 更新状态。

关于javascript - 如何在 React 中更新嵌套状态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43040721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com