81 votes

React batch state update fonctionne-t-il lors de l'utilisation de hooks?

Pour les composants de classe, this.setState appelle batch s'il se trouve à l'intérieur des gestionnaires d'événements. Mais que se passe-t-il si l'état est mis à jour en dehors du gestionnaire d'événements et en utilisant useState hook?

 function Component() {
  const [a, setA] = useState('a');
  const [b, setB] = useState('b');

  function handleClick() {
    Promise.resolve().then(() => {
      setA('aa');
      setB('bb');
    });
  }

  return <button onClick={handleClick}>{a}-{b}</button>
}

Rendra-t-il aa - bb tout de suite? Ou ce sera aa - b puis aa - bb ?

4voto

kushal Points 402

Si le gestionnaire d'événements est react-based il regroupe les mises à jour. Cela est vrai pour les appels setState ou useState.

Mais il ne traite pas automatiquement si l'événement est non-react c'est-à-dire setTimeout, Promise calls. Bref, tout événement issu des API Web .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X