【发布时间】:2018-03-21 02:50:44
【问题描述】:
我一直在尝试围绕 setState 进行思考。我知道首选的方法是传递 setState 一个函数,因为该方法是异步的,因此可以防止覆盖状态更改。所以最常见的是:
this.setState(() => ({title}))
但是如果我有一个复杂的对象怎么办。 我的状态是这样的:
{
movie: { name : 'one', length: 35},
showLength: false
}
我想显示基于按钮点击的长度,所以我想将 bool 更改为 true/false,这很容易
this.setState((prevState) => ({showLength : !prevState.showLength}))
但是如果我想编辑电影的名称怎么办?在将它传递给 setState 之前,我是否必须克隆整个状态,或者是否有更简单的方法。我的意思是这不起作用(但表明了我的意图):
this.setState((prevState) => ({movie.title:'new title'}))
【问题讨论】:
-
抱歉重复。称为嵌套对象。还必须向 babel 添加“transform-object-rest-spread”才能使其正常工作!
标签: reactjs