Я знаю, что 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 выполняет эти обновления состояния, ничего другого.
Любой ответ, подкрепленный документацией, высоко оценен.