на кнопку Post (Slow), а потом сразу на 3 кнопку. В консоли видим, что рендеринг массива остановился, т е мы его прервали, когда нажали на 3 кнопку.
Означает ли, что вычисление для рендеринга react делает в отдельном потоке(иначе как другая кнопка вообще остается доступной)?
нет, потоков в жс условно не существует, скорее всего реакт разбивает рендер на батчи и асинхронно их скедулит, но это не точно. ну и console.log это макротаска, которая позволяет обработчикам ивентов заскедулится вовремя. хотя и без консольлог ивент срабатывает, что для меня было странно
похоже это фича React.Fiber: https://www.velotio.com/engineering-blog/react-fiber-algorithm React Fiber divides the update into units of works. It can assign the priority to each unit of work, and has the ability to pause, reuse, or abort the unit of work if not needed. React Fiber divides the work into multiple units of work, which is fiber. It schedules the work in multiple frames and uses the deadline from the requestIdleCallback. Every update has its priority defined like animation, or user input has a higher priority than rendering the list of items from the fetched data.
Да, кстати, хорошая мысль, спасибо)) я что-то не подумал, что массив можно поэлементно обрабатывать, а не нахрапом)
Кстати, получается , что если будет не массив а 1 компонент, но это не сработает? Сейчас проверю!
Обсуждают сегодня