Как убрать процессы запущенные уже удаленным скриптом внутри SPA в React?
Был бы очень признателен за любую помощь.
К вопросу:
Ситуация вынудила использовать сторонний JS код внутри React.
Добавляю этот код при ComponentDidMount с помощью добавления в DOM тега script c указанным src.
При ComponentWillUnmount я удаляю добавленный тег script, для того чтобы избежать клонирования и ненужной нагрузки на других разделах моего SPA.
При переходе в другой раздел приложения, тег, как и должно, удаляется. НО, процессы которые были запущены этим сторонним кодом остаются. И начинают грузить всё приложение. Вижу это в инструментах отладки.
Если совершить несколько переходов туда и обратно, то эти процессы размножатся до таких размеров, что подвисать начнет даже сам браузер.
Что я упускаю?....
Как убрать процессы запущенные уже удаленным скриптом внутри SPA в React?
UPD: Забыл упомянуть, что сторонний код обфусцирован. Работать внутри него не представляется возможным.
Ну, по хорошему, сторонний код должен поддерживать какое-то апи: калбеки или сигналы или ещё что, чтобы остановить себя. Особенно, если там какие-то тяжелые операции. Если такого нет, можно попробовать сломать его, чтобы он выбросил исключение и остановился.
В итоге обошелся обработчиком смены урла, который вызывает несуществующую функцию и после этого сторонний скрипт падает с ошибкой и прекращает существовать. Спасибо!
Запоминать факт, что этот сторонний код был добавлен, и больше не добавлять. Можно просто не удалять тег.
В общем случае, этот код завернут в IIFE, и залезть внутрь него не получится. Если он не проверяет какие-то внешние флаги, не взаимодействует с внешними переменными и функциями, то никак. А если взаимодействует, то надо смотреть по ситуации, что там конкретно.
Если тот скрипт выполняет только какие-то вычисления, то попробуй сделать сервис воркер, в нем запускать тот скрипт. А через сообщения общаться с сервис воркером и получать от него данные уже в реакте.