【发布时间】:2019-06-25 11:24:40
【问题描述】:
我正在制作一个用于管理多个网站的管理面板。我的 vue-router 路由都以网站 slug 为前缀,并且我在路由器上有一个 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 时,不会重新评估该组件,并且会加载与前一个站点相同的组件。但是状态已经改变,所以这不是问题。
有没有一种方法可以让路由器组件重新评估该功能,或者我是否缺少一些可以用于此目的的明显功能?
【问题讨论】:
标签: javascript vue.js vuex vue-router