我需要执行以下操作。
let oldState
this.setState(state => {
oldState = state
if (smth) {
return null
}
return {show: true}
},
() => {
if (this.state === oldState) {
return
}
// do some extra stuff
}
)
问题是,如果更新发生了,我是否可以依靠react始终创建一个新对象,否则就不会。有任何已知的保证吗?如果到达{show: true}
并且状态show
为true
,则对象会保持不变还是会创建一个新对象?
答案 0 :(得分:1)
是的。您可以treat state as immutable –更新后将创建一个新对象。另外,作为第二个参数传递给setState
的回调在运行计划的setState
操作之前不会运行。