与先前状态相比,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
将等于 !undefined
即 true
。通过这种方式,您可以在 true
和 false
之间切换,而无需在某个参数的状态中设置初始值。
我个人会 state = { showForm: false };
处于初始状态,以便您的同事或您自己在 6 个月后可以一目了然地看到该组件处于什么状态。
给出下面的示例,这是将函数传递给 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
将等于 !undefined
即 true
。通过这种方式,您可以在 true
和 false
之间切换,而无需在某个参数的状态中设置初始值。
我个人会 state = { showForm: false };
处于初始状态,以便您的同事或您自己在 6 个月后可以一目了然地看到该组件处于什么状态。