[英]ReactJS: Update nested state object properties without replacing whole object using setState()
[英]Update nested setState Object - ReactJS
this.state = {
qs: {catName:'',subCatName:''}
}
我有上面嵌套的状态对象。 为了setState,我在componentDidUpdate中使用了以下代码。
var newQs = {...this.state.qs}
newQs.catName = 'name';
this.setState({qs: newQs});
但它不起作用,仍然this.state.qs为空未更新。 我甚至试过以下一个。
this.setState({...this.state, qs: {
...this.state.qs,
catName: 'name'
}});
仍然没有用。
像这样使用setState:
this.setState( prevState =>
( { qs: { ...prevState.qs, catName: 'name' } } )
)
你不需要这里...this.state
因为React合并了你所在州的其他部分。
我也根据@ kuby的评论编辑了我的建议。 React现在建议使用带有prevState的函数,而不是直接设置状态。 这是因为状态更新可能是异步的。 因此,使用函数是一种更好的方法。 如果我们不使用并不意味着总是存在问题的功能,但可能存在且安全方面始终是更好的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.