Как React прерывает рендер: конкурентный рендеринг изнутри
Since React 18, rendering can be interrupted, allowing urgent updates to overtake non-urgent ones even when React has already begun the non-urgent work. A central question is how React yields the thread to the browser mid-render so input can be handled, then continues from the same point. It also raises why React could not do this before React 16, who decides which updates are urgent, and why most renders are never interrupted.
Начиная с React 18 рендер можно прервать: срочные обновления обгоняют несрочные, даже если React уже взялся за несрочное. Если задуматься, вопросов много: — Как React посреди рендера отдаёт поток браузеру, чтобы тот обработал ввод, а потом продолжает с того же места? — Почему до React 16 он так не умел? — Кто решает, какие обновления срочные, и почему большинство рендеров не прерывается вообще? — Что происходит с незакоммиченными обновлениями, когда пришло что-то срочное? — И главное, как обновления, которые выстраиваются в очередь, не путаются в порядке, если срочное пришло позже, но должно обогнать несрочные? Читать далее