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

How does React SetState update state when comparing to a previous state

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

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

较少推荐的替代方案:

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

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

是不是:状态相同则值为假,状态不更新,状态不同则值为真,状态更新?

如果 showForm 不处于状态,则 !this.state.showForm 将等于 !undefinedtrue。通过这种方式,您可以在 truefalse 之间切换,而无需在某个参数的状态中设置初始值。

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