我知道 React 可以异步和批量地执行状态更新,以便进行性能优化。因此,您永远不能相信在调用 setState
之后要更新的状态。但是你能相信 按调用 setState
的顺序更新状态的反应吗
请考虑单击下列示例中的按钮:
有没有可能 A 为假,b 为真为:
class Container extends React.Component {
constructor(props) {
super(props);
this.state = { a: false, b: false };
}
render() {
return <Button onClick={this.handleClick}/>
}
handleClick = () => {
this.setState({ a: true });
this.setState({ b: true });
}
}
2. A 为假,b 为真有没有可能:
class SuperContainer extends React.Component {
constructor(props) {
super(props);
this.state = { a: false };
}
render() {
return <Container setParentState={this.setState.bind(this)}/>
}
}
class Container extends React.Component {
constructor(props) {
super(props);
this.state = { b: false };
}
render() {
return <Button onClick={this.handleClick}/>
}
handleClick = () => {
this.props.setParentState({ a: true });
this.setState({ b: true });
}
}
请记住,这些都是我的用例的极端简化。我意识到我可以用不同的方法来做这件事,例如在例子1中同时更新两个状态参数,以及在例子2中对第一个状态更新的回调中执行第二个状态更新。然而,这不是我的问题,我只对 React 是否有一种定义良好的方式来执行这些状态更新感兴趣,没有别的。
任何有文档支持的答案都非常感谢。