Еще одна кстати интересная вещь в React 18 это батчинг



Для начала нужно толком понять что такое батчинг - грубо говоря это объдинение нескольких ненужных ререндеров в один. То есть когда у вас каскад изменений стейтов в функции, то без батчинга, на каждое изменение будет ререндер. А с батчингом реакт понимает что у него много изменений и сделает ререндер только один раз



Батчинг появился в React еще в 16 версии, но он работал в синхронном формате. То есть если вы в промисе делали какие-то обновления это вызывало еще один перерендер. Сейчас уже в 18 версии батчинг работает везде, то есть мы делаем функцию, которая содержит в себе множество изменений стейтов (включая и в асинхронном формате) и рендер по итогу будет один



А если мне надо чтобы было несколько перерендеров ?

В таком случае есть такая штука как flushSync. Она уже позволяет выделить взятое изменение в отдельный ререндер.



А если у меня не 18 версии React ?

В таком случае есть другая штука это unstable_batchedUpdates. Обернув в нее наше асинхронное изменение, мы увидим что батчинг будет работать исправно



🔥 Накидайте тут ваших огоньков 🔥