Русский
Открыть в Telegram

Пост Google Translate может сломать React приложение

23 августа 2024
З
Заметки про React
Ссылка
нажмите — покажем
Google Translate может сломать React приложение Браузерное расширение Google Translate может сломать React приложение. Это связано с тем, что, когда расширение активируется, он ищет узлы TextNode для перевода. Эти узлы заменяются на FontElement с переведенными строками внутри. Например: <p>There are 4 lights!</p> // После перевода: <p><font>Er zijn 4 lampen!</font></p> Как видно из примера, меняется DOM структура элемента. Исходный TextNode размонтируется и заменяется новым FontElement с переведенным текстом внутри. Какие могут возникнуть проблемы при активированном Google Translate: 🔴 Значения стейта useState на странице может не обновляться. Если расширение активировано, то оно размонтирует узел и заменяет DOM элемент. Однако размонтированный DOM узел остается в памяти приложения и изменения стейта происходят в нем. 🔴 Краш приложения: NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node. Это может произойти из-за условного рендера строки, например: {lightsOn && 'There are 4 lights!’} 🔴 Неправильное значение в event.target. Когда Google Translate активируется, то event.target у текста становится элемент font, а не ожидаемый элемент, в котором был изначальный текст. Кроме Google Translate приложение могут сломать и другие расширения, которые манипулируют DOM. На данный момент нет реального решения этой проблемы. Есть лишь некоторые способы обхода, но они создают дополнительные проблемы. Например, один из более-менее простых способов обхода проблемы заключается в оборачивании условного рендера строки в span. https://martijnhols.nl/gists/everything-about-google-translate-crashing-react
30 · 3.5K ·

Рядом в ленте

ЗЗаметки про ReactГлубокое погружение в формы в современном React В своем блоге Кент С. Доддс рассказал, как использовать новые хуки useFormStatus, useActionState и useOptimisticЗЗаметки про ReactСоздание стейт менеджера за 40 строк Пример простого стейт менеджера для React, работающего через хук useSyncExternalStore. Хук useSyncExternalStore появился в
это сообщение
ЗЗаметки про ReactТипобезопасный REST API вместе с Zod При работе с REST API нельзя быть уверенным в том, что вернется в ответе запроса. Даже если используешь TypeScript и пишешьЗЗаметки про ReactОбработка ошибок в React Server Components В серверных компонентах React могут возникать ошибки. Для их обработки можно использовать ErrorBoundary из react-erro
ЗЗаметки про ReactЗаметки про React@ru_react_notes · канал · Технологии
3 412подписчиков491постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем