[英]Vue router dynamic component
我对vue-router感到有些困惑,因为我不知道该怎么办了,找不到适合我的东西,我不确定它是否适用于旧版本或其他版本。
我的问题:我有一个适用于2个不同网站的Vue应用程序,例如: example.nl和example.be 。 现在,对于两个站点,我都有一个siteId。 我可以从vuex获取该ID。
const siteId = store.getters.siteId;
现在,基于siteId,我想在路线上加载组件。
范例 :
import {store} from '@/plugins/vuex_store';
const siteId = store.getters.siteId;
import test from 'nl/test';
if(siteId === 2) {
import test from 'be/test'; <-- thows error 'statement expected'.
}
let router = ({
path: 'exmaple',
name: 'example',
component: test,
});
export default router;
我尝试了几件事,例如:
import("nl/test").then(foo => console.log(foo.default));
但这给了我一个语法错误。
任何想法都很好
我可能会为您提供3种解决方案。 我不确定解决方案2。
const siteId = store.getters.siteId;
let loadSite = () => import ('nl/test');
if(siteId === 2) {
loadSite = () => import ('be/test');
}
let router = ({
path: 'exmaple',
name: 'example',
component: loadSite,
});
要么
const siteId = store.getters.siteId;
const loadSite1 = () => import ('nl/test');
const loadSite2 = () => import ('be/test');
let router = ({
path: 'exmaple',
name: 'example',
component: (siteId === 1) ? loadSite1 : loadSite2,
});
要么
const loadSite1 = () => import ('nl/test');
const loadSite2 = () => import ('be/test');
let router = ({
path: 'example',
name: 'example',
}, {
path: 'site1',
name: 'site1',
component: loadSite1,
}, {
path: 'site2',
name: 'site2',
component: loadSite2,
});
router.beforeEach((to, from, next) => {
if (to.path.example === 'example') {
if(store.getters.siteId === 1) return next('site1');
else if(store.getters.siteId === 2) return next('site2');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.