vue-route 변경 시 동적 가져오기 재평가
여러 웹 사이트를 관리하는 관리 패널을 만들고 있습니다.vue-router 루트에는 모두 Web 사이트 slug가 프리픽스 되어 있으며 라우터 상에 각각1개의 before가 설정되어 있습니다.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
컴포넌트는 재검출되지 않고 이전 사이트와 동일한 컴포넌트가 로드됩니다.상태가 바뀌었기 때문에, 이것은 문제가 아닙니다.
라우터 컴포넌트의 기능을 재평가할 수 있는 방법이 있습니까?아니면 이 기능에 사용할 수 있는 명백한 기능이 부족한 것입니까?
Vue Router는 가능한 한 컴포넌트를 재사용하려고 합니다.추가해 보셨습니까?beforeRouteUpdate
(마운트 또는 다른 것을 사용하는 경우와 비교하여) 데이터를 명시적으로 설정하도록 컴포넌트에 할당해야 합니까?또, 다음과 같이 설정할 수도 있습니다.key
명시적인 무언가에 대한 구성요소의 특성(예를 들어)website_slug
value)를 사용하여 컴포넌트를 재사용하지 않도록 합니다.
저는 개인적으로 이 제품을 사용하는 것을 선호합니다.key
할 수 있을 때.
참조: https://github.com/vuejs/vue-router/issues/1490
beforeRouteUpdate
방법: https://jsfiddle.net/Linusborg/L7hscd8h/2208/
key
방법: https://jsfiddle.net/Linusborg/L7hscd8h/1528/
몇 가지 솔루션을 시도했지만 루트 구성요소를 재평가할 수 없었습니다.결국 Vue를 부트스트랩하기 전에 사용 가능한 웹 사이트를 로드하여 모든 웹 사이트에 대해 가능한 모든 경로를 생성했습니다.
이와 같이, 다른 Web 사이트의 같은 페이지가 일의의 루트가 되어, 각 Web 사이트에 대해서 컴포넌트가 평가됩니다.
언급URL : https://stackoverflow.com/questions/56752982/re-evaluate-dynamic-import-on-vue-route-change
'programing' 카테고리의 다른 글
Laravel Nova Tool에 Vuex를 추가하는 방법 (0) | 2022.08.08 |
---|---|
디스패치 메서드가 저장할 변수를 전달하지 않음 (0) | 2022.08.08 |
vue.js에 고정된 헤더가 있는 스틱 사이드바(jQuery 없음) (0) | 2022.08.08 |
C 또는 C++를 사용하여 디렉토리 내의 파일 목록을 가져오려면 어떻게 해야 합니까? (0) | 2022.08.08 |
Linux에서 홈 디렉터리 가져오기 (0) | 2022.08.08 |