SIBERIA CAN CODE 🧊

SIBERIA CAN CODE 🧊 

Канал для frontend разработчиков

192subscribers

70posts

Showcase

1
goals2
53 of 100 paid subscribers
Хочу иметь стабильный доход для создания контента 🔥
$4.26 of $150 raised
На монтаж роликов
Гидрация в React: почему инъекции в DOM работают по-разному

Процесс гидрации в React часто воспринимают как строгую последовательную проверку всех узлов DOM-дерева. В обычном случае, если сторонний скрипт вставит лишний <div> или <script> перед элементом React, гидрация «споткнется», возникнет mismatch, и дерево будет перерисовано заново. Однако при работе с некоторыми тегами логика меняется благодаря системе Resources (Hoistables), представленной полноценно в react 19. Одним из таких особенных тегов является тег script.

Внешние скрипты (async src) - react классифицирует внешние асинхронные скрипты как «ресурсы». При обходе DOM-дерева алгоритм гидрации умеет распознавать такие узлы как независимые. Если он видит сторонний асинхронный скрипт, он просто пропускает его и ищет следующий подходящий по элемент. Это позволяет динамически внедрять аналитику или внешние библиотеки между компонентами React.

Инлайновые скрипты (<script>...</script>) - с инлайновым кодом ситуация иная. Поскольку содержимое таких скриптов может влиять на состояние страницы здесь и сейчас, React считает их позиционно-зависимыми. При гидрации React не может просто пропустить инлайновый скрипт — он пытается заявить на него права, сопоставляя со своим следующим ожидаемым компонентом. Это приводит к подмене узлов и ошибке гидрации (например, Minified React error #418).

Для корректной работы React все внешние внедрения в DOM должны быть позиционно-независимыми. В случае со скриптами использование async src позволяет обмануть алгоритм гидрации, в то время как инлайновые вставки практически гарантированно приводят к ошибкам в консоли и лишним рендерам.
Subscription levels3

junior

$2.99 per month
• Ранний доступ к ютуб контенту
• Рассылка новостей в закрытом канале
• Доступ к новостному боту c ai
+ chat

middle

$7.5 per month
• Ранний доступ к Ютуб-контенту
• Онлайн встречи в закрытом чате
• Рассылка новостей в закрытом канале
• Доступ к новостному боту c ai
+ chat

senior

$15 per month
• Ранний доступ к Ютуб-контенту
• Онлайн встречи в закрытом чате
• Рассылка новостей в закрытом канале
• Доступ к новостному боту c ai
+ chat
Go up