reactjs / react.dev

The React documentation website
https://react.dev/
Creative Commons Attribution 4.0 International
11.07k stars 7.55k forks source link

Guarantees about re-rendering and setState batching inside an event handler #3719

Open NullPainter2 opened 3 years ago

NullPainter2 commented 3 years ago

Hi, I have React 17 and I am using hooks. I believe answer is hinted by "Multiple updates inside event handlers get batched into a single update." ... https://reactjs.org/docs/implementation-notes.html#what-we-left-out , but I am not 100% sure I understand it correctly.

Does React guarantee that while my event handler is being processed no re-render happens? That is first re-render happens after my event handler exits.

  const onClick = () => {
    setState1(1);
    // do some stuff
    setState1(2);
    // do some stuff
    setState4(4);

    // no-rerender will ever be called by React until this point (that is until function returns) ???
    // re-render is only scheduled to happen ASAP
  } 

Thanks for answering :)

gaearon commented 3 years ago

yes

myteax commented 3 years ago

Yes that is correct. However, you pass the event as a parameter and use event.preventDefault() to complete prevent it from re-rendering if you want.