反应是否总是在状态变化时创建一个新对象?

时间:2020-02-21 18:48:12

标签: reactjs

我需要执行以下操作。

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}并且状态showtrue,则对象会保持不变还是会创建一个新对象?

1 个答案:

答案 0 :(得分:1)

是的。您可以treat state as immutable –更新后将创建一个新对象。另外,作为第二个参数传递给setState的回调在运行计划的setState操作之前不会运行。