当前位置: 首页 > news >正文

Vue3 + TypeScript + Ant Design Vue 实现左侧菜单动态配置与路由跳转(支持路由选中项同步 + 自动展开父菜单)

在后台管理系统开发中,左侧菜单是必不可少的功能模块。很多同学在用 Vue3 + TypeScript + Ant Design Vue 时,常常会遇到菜单 如何动态生成如何和路由联动如何保持展开项和选中项 等问题。本文将结合一个完整示例,带你一步步实现一个支持动态配置、支持选中项自动跟随路由、支持父菜单自动展开的左侧菜单。


一、项目准备

  • 技术栈:Vue3 + TypeScript + Ant Design Vue + Vue Router

  • 目标效果

    • 菜单配置由数组动态生成;

    • 点击菜单自动路由跳转;

    • 支持菜单折叠/展开;

    • 选中项自动跟随路由,高亮正确显示

    • 父菜单自动展开,保证当前子路由显示正确;

    • 支持多级子菜单。


二、实现代码

1. Menu 配置文件:菜单数据(通用模拟数据)

// menuData.ts
import {PieChartOutlined,FundViewOutlined,BranchesOutlined,CarOutlined
} from "@ant-design/icons-vue";
import { reactive, h } from "vue";export const menuData = reactive([{key: "/dashboard",icon: () => h(PieChartOutlined),label: "仪表盘",title: "dashboard",},{key: "/reports",icon: () => h(FundViewOutlined),label: "报表中心",title: "reports",},{key: "3",icon: () => h(CarOutlined),label: "资源管理",title: "resource",children: [{key: '/resource/create',label: '新增资源',title: 'create-resource',},{key: '/resource/list',label: '资源列表',title: 'resource-list',},{key: '/resource/settings',label: '资源设置',title: 'resource-settings',}]},{key: '4',icon: () => h(BranchesOutlined),label: '系统管理',title: 'system',children: [{key: '/system/users',label: '用户管理',title: 'system-users',},{key: '/system/roles',label: '角色
http://www.dtcms.com/a/405995.html

相关文章:

  • uniapp项目使用字体图标
  • 前端拖拽,看似简单,其实处处是坑
  • 【数据结构】队列(Queue)全面详解
  • 网站做短信接口具体方法哪个网站做ppt
  • Android compose屏幕适配终极解决方案
  • 无人机飞行高度模块技术解析
  • 会议安排问题之贪心算法
  • H3C smart-link实验
  • IMX6ULL--EPIT,GPT
  • 前端经验:完美的圆角
  • Vue3组件通信的方法有哪些?
  • 学习嵌入式的第四十一天——ARM——时钟与定时器
  • 淮安网站建设优化北京h5网站建设报价
  • Qt 网络编程
  • ORBSLAM3-优化函数整理
  • 计算机视觉:安防智能体的实现与应用基于YOLOv8的实时无人机检测与跟踪
  • 【apifox】安装要点
  • 网站图片一般的像素企业网站需要多大空间
  • 做网站需要给设计提供专业的商城网站开发
  • 《Spring MVC奇幻漂流记:当Java遇上Web的奇妙冒险》
  • 前端性能优化,给录音播放的列表加个播放按键,点击之后再播放录音。减少页面的渲染录音文件数量过多导致加载缓慢
  • uniapp中封装底部跳转方法
  • Kafka-保证消息消费的顺序性及高可用机制
  • 通过kafka-connect 实现debezium数据监听采集
  • GTSAM 中自定义因子(Custom Factor)的详解和实战示例
  • 要建一个网站怎么做老板合作网站开发
  • 【Linux基础知识系列:第一百三十九篇】使用Bash编写函数提升脚本功能
  • 【MyBatis-Plus 动态数据源的默认行为】
  • GaussDB 和 openGauss 怎么区分?
  • 云服务器里的IP是什么意思,他们之间有什么关系?