我知道 React 可能会异步和批量执行状态更新以进行性能优化。因此,您永远不能相信在调用setState
. 但是你可以信任的react更新相同的顺序状态setState
被称为对
- 相同的组件?
- 不同的组件?
考虑单击以下示例中的按钮:
1.是否有可能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 执行这些状态更新是否有明确定义的方式感兴趣,没有别的。
非常感谢文档支持的任何答案。