Как правильно использовать ресурсы JavaScript в компоненте React при суб-маршрутизации - PullRequest
0 голосов
/ 01 ноября 2019

Я создаю приложение React.js с использованием дизайна SPA (одностраничного приложения);естественно, я использую маршрутизацию, чтобы помочь управлять и отображать различные компоненты.

Мое приложение React построено по веб-шаблону, в котором есть ряд рекомендуемых «ресурсов» - коллекция CSS, изображений и поставщиков. предложил JS. Шаблон предлагает удобное использование нескольких «фирменных» скриптов - хотя многие не по умолчанию - которые я хочу включить в один из моих компонентов. Звучит достаточно просто, верно?

Однако этот компонент вложен как суб-маршрут к главной странице макета, где основной макет направляется напрямую - суб-маршрут является косвенным. (Не уверен, что это изменит способ обработки, но я подумал, что добавлю этот кусочек). Он отображается нормально и все, поэтому не стоит беспокоиться ... пока.

В документации по веб-шаблону рекомендуется, чтобы я

включил сценарий в область «Необязательный JS» на странице. нижний колонтитул

Однако, он не говорит мне , на какой странице мне нужен скрипт в . Больше ничего не оставалось, поэтому я поместил скрипт в индексный файл (поскольку это единственный файл в шаблоне, имеющий заметную область «Необязательный JS»). И вуаля, скрипт работает! ... sorta:

Он работает только тогда, когда я напрямую направляю к компоненту, использующему скрипт.


В другихслова, скажем, компонент использует URL-адрес «localhost: xxxx / admin / component2», где «admin» - это основной компонент макета, который имеет два суб-маршрута: «component2» и «component1».

Если яперейти непосредственно к "component2", он работает нормально;скрипт корректно отображается ... в основном ... небольшая ошибка, но это связано с самим скриптом.

Но если я начну с основного компонента макета (т. е. "localhost: xxxx / admin /")или перейдите от «component2» к «component1» (т. е. «localhost: xxxx / admin / component1»), «component2» прекращает работу со сценарием «vendored». Компонент сам работает (так как он не связан напрямую со сценарием), но оставляет меня почесывать голову.

Я думал, что моя проблема может быть одной из трех: 1)Я мог неправильно использовать маршруты, 2) Как-то связано с монтированием JS «вендора» [я не совсем уверен, является ли это проблемой, но я попытался исследовать ее как потенциальное решение], или 3) Сценарий находится внеправильное расположение


TL; DR : что может помешать «продаваемому» JS работать с моим компонентом с маршрутизацией, но только , когда он естьнет прямого доступа?

...