我正在制作一个管理面板,用于管理几个网站。我的vue路由器路由都以网站slug作为前缀,路由器上有一个beforeach,它将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路由器尽量重用组件。您是否尝试将beforeRouteUpdate添加到组件以显式设置数据(与使用mounted或其他方式相比)?还可以将组件的key属性设置为显式的值(如website_slug值),以确保组件不被重用。
我个人更喜欢尽可能使用key
见:https://github.com/vuejs/vue-router/issues/1490
beforeRouteUpdate方法:https://jsfiddle.net/Linusborg/L7hscd8h/2208/
key方法:https://jsfiddle.net/Linusborg/L7hscd8h/1528/

关于javascript - 重新评估vue-route更改中的动态导入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56752982/

10-10 05:44