代码之家  ›  专栏  ›  技术社区  ›  ardev

与以前的状态相比,React SetState如何更新状态

  •  1
  • ardev  · 技术社区  · 6 年前

    下面的示例是将函数传递给setState的模式,而不是下面的基于对象的替代模式。 我不太清楚用这种方式更新状态的机制。有人能帮忙清理一下吗?

    submit(){
       this.setState((prevState, props) => {
          return {showForm: !prevState.showForm}
       });
    }
    

    建议较少的替代方案:

    submit(){
           this.setState({showForm: !this.state.showForm}
           });
        }
    

    但是,如果它不是旧状态,那么让它插入新状态的机制是什么。
    我知道否定值是用来强制改变状态的,但是 !prevState.showForm ,类似于 !this.state.showForm 似乎是简洁的语法和我不清楚的机制。

    是不是:如果状态相同,那么值是假的,所以状态不会更新,但是如果状态不同,那么值是真的,所以状态会更新?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Tholle    6 年前

    如果 showForm 不在状态,它将 !this.state.showForm 将等于 !undefined 那就是 true . 这样你就可以在 真的 false 在某个参数的状态下没有初始值。

    我个人会 state = { showForm: false }; 在初始状态下,以便您的同事或您自己在6个月内可以一目了然地看到此组件的状态。