Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 4

Не хватает выгрузки скрипта (хотя бы удалить его из DOM) при отмонтировании компонента через cleanup функцию эффекта (не знаю как это работает с useAsync). Если компонент использующий скрипт отмонтируется и примонтируется (или изменится url), скрипт добавится дважды, трижды и т д. Это может быть нежелательное поведение. Как минимум утечка ресурсов, как максимум экземпляры скрипта могут конфликтовать.

Альтернатива может быть завести глобальную Map результатов загрузки скриптов по url и если скрипт уже грузили раньше, не грузить его второй раз, а возвращать кешированный результат. Но надо обработать гонку, если useScript вызван повторно до окончания загрузки.

Для меня кажется это странным грузить что то еще таким образом. Почему не динамический импорт? Бандл не уведичится, а просто чанк загрузится. Почти все либы уже поддерживают стандарт es.

Автор привёл пример всяких внешних скриптов аналитики, социальных кнопок и прочих интеграций

У меня такой хук называется useSdk =)

а по загрузку несколько скриптов там просто так делать


useSdk(id, url)


const exists = document.getElementById(id);
if (exists) return resolve();


Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации