与之前的状态比较时,React SetState如何更新状态

时间:2018-08-09 17:15:13

标签: javascript reactjs setstate

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

@Component({
    selector: 'page-login',
    templateUrl: 'login.html'
})
export class MyParent {
    @ViewChild(PhoneInputComponent) childEl: PhoneInputComponent;

    getChildValue(){
        const value = this.childEl.getMyValue();
        console.log(value);
        console.log(this.childEl);

较少建议的替代方法:

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

但是,如果不是旧状态,可以通过什么机制插入新状态。
我了解到,取反的值用于强制改变状态,但是submit(){ this.setState({showForm: !this.state.showForm} }); } (类似于!prevState.showForm)看起来像是简洁的语法,我不清楚其机制。

是不是:如果状态相同,则值是false,因此状态不会更新,但是如果状态不同,则值是true,因此状态会更新?

1 个答案:

答案 0 :(得分:0)

如果showForm未处于状态,则!this.state.showForm将等于!undefined,即true。这样,您可以在truefalse之间切换,而无需为某个参数设置初始值。

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