Vários setStates não se acumulam em uma atualização / renderização ...?

Lembro-me de como fiquei surpreso quando descobri quesetState era assíncrono. Agora me deparei com um comportamento "estranho" que não se encaixa na minha compreensão desetState assincronicidade.

Considere um trecho abaixo (por algum motivo, isso resulta emScript Error, aqui está a caixa de proteção externa:https://codesandbox.io/s/zwrvkz74y3):

class SomeComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      prop1: 1,
      prop2: 2
    };

    setTimeout(this.changeProp1.bind(this), 100);
  }

  componentDidUpdate() {
    console.info("componentDidUpdate called");
  }

  changeProp1() {
    this.setState({ prop1: 2 });
    this.changeProp2();
  }

  changeProp2() {
    this.setState({ prop2: 3 });
  }

  render() {
    const { prop1, prop2 } = this.state;
    return React.createElement('div', null, `prop1: ${prop1}, prop2: ${prop2}`);
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(React.createElement(SomeComponent), rootElement);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

Se você executar isso e verificar o console, verá quecomponentDidUpdate&nbsp;foi invocado duas vezes, mas osetStates&nbsp;acumular e atualizar o componente apenas uma vez?

ATUALIZAR: Eu acho que minha confusão vem dessa frase noAtualizações de estado podem ser assíncronas&nbsp;seção no site do ReactJS:

A reação pode agrupar várias chamadas setState () em uma única atualização para desempenho.