Вы жмёте кнопку, ждёте обновления, а в ответ — тишина. React не глючит — он просто решил подождать, пока вы нажмёте ещё раз.
— как именно React «пакует» несколько setState в один рендер
— когда batching работает, а когда — нет
— и зачем в редких случаях нужен
flushSync
, если важно обновить прямо сейчас#under_hood #react
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🥰2
Кажется, что всё просто: список, onClick — готово. Но при сотнях элементов каждый ререндер создаёт новые функции в JSX.
React считает их изменёнными и перерисовывает даже те строки, что не менялись.
На демо — незаметно. На проде — больно.
Каждый ререндер создаёт новые колбэки → React считает пропы изменёнными → перерисовывает.
useCallback стабилизирует ссылку, и компонент больше не «дёргается» без причины.
— Если список огромный — рендерьте только видимую часть (react-window, react-virtualized).
— Если элемент сложный — выносите его в memo-компонент с передачей колбэка через пропсы.
#hotfix #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🥰2🔥1