Я делаю админ-панель, которая используется для управления несколькими сайтами.Все мои маршруты vue-router имеют префикс с веб-сайтом, и у меня есть beforeEach на маршрутизаторе, который соответственно устанавливает website_slug
в состояние vuex.
Каждый сайт будет использовать большинство одинаковых компонентов, нотакже будет несколько сайтов, которые имеют пользовательские компоненты страниц.
Для этого случая я создал функцию с именем importOrDefault
, например:
const importOrDefault = (componentName, store) => {
return import(/* webpackChunkName: "[request]" */ `./Pages/${store.getters.website.slug}/${componentName}`)
.catch(() => import(/* webpackChunkName: "[request]" */ `./Pages/_shared/${componentName}`));
};
, которую я использую в конфигурации маршрутизатора следующим образом.:
{
path: '/:website_slug/',
name: 'dashboard',
component: () => importOrDefault('Dashboard', store)
}
Эта установка прекрасно работает при нагрузке.Однако при переходе к другому :website_slug
компонент не переоценивается, и загружается тот же компонент, что и на предыдущем сайте.Однако состояние изменилось, поэтому проблема не в этом.
Есть ли способ заставить компонент маршрутизатора переоценить функцию или мне не хватает какой-то очевидной функциональности, которую я могу использовать для этого?