vue3如何实现动态路由
2024-01-03 18:10:11
首先明白什么是动态路由,路由的触发往往是由菜单决定的,那么就要先理解什么是动态菜单,动态菜单就是说每个用户的角色不同,看到的菜单,往往也是不同的,管理员看到的肯定会多一些,那么因为有不同的菜单,对应着,点击跳转的页面也是不同的,那么往往会在登录成功后,拿到该用户所有的所有菜单权限,然后每个菜单又对应着它所对要跳转的路由地址,并且也含有当前路由地址的父级路由
- 配置静态路由,就是不管哪个用户都可以看到的路由,比如主页面的路由,登陆的路由,404的路由等
import {createRouter,createWebHashHistory} from 'vue-router' import {type Route} from "@/types" //配置静态路由 let router=createRouter({ history:createWebHashHistory(), routes:[ { path:"/main", component:()=>import("@/components/Main.vue"), name:"main" }, { path:'/404', component:()=>import("@/view/404.vue") }, { path:"/", redirect:"main" }, { path:"/login", component:()=>import("@/view/Login.vue") } ] }) //对外暴露一个添加路由的函数 export function addRoute(routerList: Route[]){ console.log("sss"); for(const route of routerList){ console.log(route) router.addRoute(route.parentName, { path: route.path, name: route.name, component: ()=>import(route.component) } ) } } export default router
2.定义一个路由接口,该接口定义了从后端,拿到的用户菜单路由模型
export interface Route{ path:string,//路由地址,注意千万不要最前边的/ name:string,//路由名称 component:string,//组件地址,相对于router静态路由的index.js的位置,不要用@要用相对路径 parentName:string,//父级路由名称 }
那么我们从后端拿到的数据格式大概就是下边这样的样子
let routes:Route[]=[ { path:"404", name:"404", component:"../view/404.vue", parentName:"main" }, { path:"olds", name:"olds", component:"../components/Olds.vue", parentName:"main" } ]
那么我们在登录成功后,就可以调用路由的addRoute函数来实现动态添加路由需求
如何通过函数式编程的方式实现路由的跳转
import { useRouter } from 'vue-router';
//注意该标签一个定要放在script标签的最上边,不能放在函数中或者某个函数下边
let router=useRouter()
//登陆成功调用这里,进入主页面
function login() {
addRoute(routes)
router.push("/main/olds")
}
文章来源:https://blog.csdn.net/weixin_59244784/article/details/135366421
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!