vue 通过json数据如何找到对应组件然后 addRouter 添加路由?

通过后端返回数据然后找到对应组件 addRouter 实现用户路由权限,在动态加载组件时,一直报错,找不到组件;

clipboard.png

相关代码

actions: {

GenerateRoutes({ commit, rootState }) {
  return new Promise(resolve => {
    let accessedRouters = [];
        let menuList = rootState.user.menu;
        menuList.forEach(function(item,index,arry){
            item.component = Layout;
            if(item.children&&item.children.length>=1){
                item.children.forEach(function(chItem, chIndex,chArry){
                    let path = chArry[0].path;
                    if(typeof chItem.component=='string'){
                            chItem.component = resolve => require([`../../views/` + chItem.component + `.vue`], resolve);
                    };
                    item["redirect"] = item.path+"/"+path;
                    item["meta"] = { "title": item.title,"icon": item.icon};
                    chItem["meta"] = { "title": chItem.title}
                });
            };
            
        })
        accessedRouters = menuList;
        accessedRouters.push({
                    path: '*',
                    redirect: '/404',
                    hidden: true
                });    
    commit('SET_ROUTERS', accessedRouters)
    resolve()
  })
}

}

后来把组件名字用变量接收下再拼接就可以了,具体原因还在研究,有碰到这个问题的多注意一下,够坑的;

let comName = chItem.component;
if(typeof chItem.component=='string'){
    chItem.component = resolve => require([`../../views` + comName + `.vue`], resolve);
 };
阅读 2.7k
2 个回答

let comName = chItem.component;
if(typeof chItem.component=='string'){

chItem.component = resolve => require([`../../views` + comName + `.vue`], resolve);

};

新手上路,请多包涵

有完整的demo吗?为什么我的addRoutes一直不生效呢?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题