文章目录

  • 常用属性
  • 常用事件
  • 递归嵌套多级菜单
  • 效果

版本ant-design-vue: "^1.7.4",

常用属性

属性 说明 默认值
mode 菜单类型,现在支持垂直、水平、和内嵌模式三种 vertical
inlineCollapsed inline 时菜单是否收起状态
theme 主题颜色(light/dark) light
openKeys(.sync) 当前展开的 SubMenu 菜单项 key 数组
defaultOpenKeys 初始展开的 SubMenu 菜单项 key 数组
selectedKeys(v-model) 当前选中的菜单项 key 数组
defaultSelectedKeys 初始选中的菜单项 key 数组

说明
defaultSelectedKeys 是默认选中的keya-menu-item上绑定的key),被选中会有高亮的显示效果;selectedKeys 也是一样的作用,不要同时使用,区别在于如果只希望指定一个初始化的菜单选项就使用defaultSelectedKeys,如果需要通过自己修改数据来选中菜单的选中项就使用selectedKeys
openKeysdefaultOpenKeys也是同理)

常用事件

openChangeMenu的事件,SubMenu 展开/关闭的回调

递归嵌套多级菜单

若只有两级菜单则直接使用v-forv-if指令即可完成;若菜单级数≥3则需要使用函数式组件。具体原因官网已经做了说明:

Before v2.0, 因组件内部会动态更改a-sub-menu的属性,如果拆分成单文件,无法将属性挂载到a-sub-menu上,你需要自行声明属性并挂载。为了方便,避免属性的声明,我们推荐使用函数式组件。

代码
App.vue (测试就随便在App.vue里写了)

<template><div id="app"><div style="width: 256px"><a-button type="primary" style="margin-bottom: 16px" @click="toggleCollapsed"><a-icon :type="collapsed ? 'menu-unfold' : 'menu-fold'" /></a-button><a-menu:defaultSelectedKeys="[$route.path]":openKeys="openKeys"mode="inline"theme="dark":inline-collapsed="collapsed"@openChange="onOpenChange"@click="menuClick"><template v-for="item in list"><a-menu-item v-if="!item.children" :key="item.path"><a-icon type="pie-chart" /><span>{{ item.title }}</span></a-menu-item><sub-menu v-else :key="item.path" :menu-info="item" /></template></a-menu></div><router-view/></div>
</template><script>
import { Menu } from 'ant-design-vue';
const SubMenu = {template: `<a-sub-menu :key="menuInfo.key" v-bind="$props" v-on="$listeners"><span slot="title"><a-icon type="mail" /><span>{{ menuInfo.title }}</span></span><template v-for="item in menuInfo.children"><a-menu-item v-if="!item.children" :key="item.path"><a-icon type="pie-chart" /><span>{{ item.title }}</span></a-menu-item><sub-menu v-else :key="item.path" :menu-info="item" /></template></a-sub-menu>`,name: 'SubMenu',// must add isSubMenu: true 此项必须被定义isSubMenu: true,props: {// 解构a-sub-menu的属性,也就是文章开头提到的为什么使用函数式组件...Menu.SubMenu.props,// Cannot overlap with properties within Menu.SubMenu.propsmenuInfo: {type: Object,default: () => ({}),},},
};export default {name: "App",components: {'sub-menu': SubMenu,},data() {return {collapsed: false,openKeys: [],rootSubmenuKeys: ['/user'],list: [{key: '1',title: '信息管理',path: '/info',},{key: '2',title: '用户管理',path: '/user',children: [{ key: '2.1',title: '后台用户',path: '/adminUser',children: [{ key: '2.1.1',title: '新增用户',path: '/addAdminUser',children: [{key: '2.1.1。1',title: '用户xx',path: '/addAdminUserXX',}]}]},{ key: '2.2',title: '前台用户',path: '/frontUser',}]}],};},created(){const openKeys = window.sessionStorage.getItem('openKeys')if(openKeys){this.openKeys = JSON.parse(openKeys)}},methods: {toggleCollapsed() {this.collapsed = !this.collapsed;},onOpenChange(openKeys) {// 将当前打开的父级菜单存入缓存中window.sessionStorage.setItem('openKeys', JSON.stringify(openKeys))//  控制只打开一个const latestOpenKey = openKeys.find(key => this.openKeys.indexOf(key) === -1);if (this.rootSubmenuKeys.indexOf(latestOpenKey) === -1) {this.openKeys = openKeys;} else {this.openKeys = latestOpenKey ? [latestOpenKey] : [];}},menuClick({key}) {// 获取到当前的key,并且跳转this.$router.push({path: key})},}
};
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;padding: 50px;
}
</style>

这里省略了router配置,相信在座的各位也会!(不会的底下留言,包教包会!)

如果vue报编译错误You are using the runtime-only build of Vue,可以在vue的配置文件里加一行runtimeCompiler: true,重新运行即可。

如果点击同一个菜单报错了NavigationDuplicated: Avoided redundant navigation to current location,需要修改下Router设置(router/index.js):

const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {return originalPush.call(this, location).catch(err => err)
}

效果


自动渲染多级嵌套菜单;刷新会保存选中的菜单;点击菜单,收起其他展开的所有菜单。

【Ant Design Vue 】之Menu菜单相关推荐

  1. Ant Design Vue 切换中英文改变Menu和内容

    前言,目前一个小项目使用的是Ant Design Vue,情况是 路由从接口获取并渲染到页面上,切换国际化语言时,Menu 和 内容 都中英文自动切换. Ant Design Vue 结构 Ant D ...

  2. ant design vue pro 支持多页签模式 页签可以缓存

    ant design vue pro 支持多页签模式 页签可以缓存 代码贴在最后 启动之后页面是这样的: 第一步:修改 src/layouts/BasicLayout.vue 文件,在该文件中添加mu ...

  3. ant design vue table 高度自适应_Vue组件库大评测 Element, iView, HeyUI, Ant Design Vue

    今天偶然的机会想了解下其他Vue相关的组件库,网上刚好有文章,顺便自己做一下笔记,算是资源整理吧 .好了,话不多说,直接开始: 组件库的选择对于前端开发有者至关重要的影响,而组件的丰富性以及健壮性是我 ...

  4. Vue3:基础项目UI框架PC端(Element ui,view-ui-plus,Ant Design Vue)

    1.Element ui 文档已经更新至Vue3,可以放心使用,在使用Element ui的时候注意在使用弹性布局的时候,Element ui中的Table 表格会出现缩放无法自适应问题. 安装 $ ...

  5. 2019年 Vue 组件库大评测 Element, iView, HeyUI, Ant Design Vue

    2018年我写的Vue组件库对比文档: https://juejin.im/post/5a9628415188257a7b5ac678 一年的时间,每一个组件库都有了更多的发展,Ant Design ...

  6. vite+vue3+ts+ant design vue+tailwindcss搭建前端web应用(2)

    回顾 上篇文章地址:vite+vue3+ts+ant design vue+tailwindcss搭建前端web应用(1)_konsei的博客-CSDN博客 上篇文章搭建了vue3项目,引入了ant ...

  7. ant vue 设置中文_vue+Ant design vue做项目-Go语言中文社区

    哈喽哈喽,这期带来蚂蚁金服的一个 Ant Design 的 Vue 实现. 样式还是很现代化的,嗯...现在是2019年9月17,对现在来说还很fashion过几年就不知道了. 话不多说直接上手,喜欢 ...

  8. 【Vue3】创建 vite + vue3 + Ant Design Vue 项目

    搭建脚手架 创建项目: 然后按照它的指示运行项目 配置文件 安装构建 vue-router: npm i vue-router@next 创建 router/index.js 文件: import { ...

  9. 2019 Electron+Vue+Ant Design Vue仿网易云音乐windows客户端实战分享

    特点 拖拽播放 桌面歌词 mini模式 自定义托盘右键菜单 任务栏缩略图,歌曲操作 音频可视化 自动/手动检查更新 Nedb数据库持久化 自定义安装路径,安装界面美化 浏览器中启动客户端 Travis ...

  10. Ant Design Vue Pro(V3.0.0 )MultiTab标签缓存,完美解决

    使用Ant Design Vue Pro 基础框架都知道好用,但是MultiTab标签一直未解决(V3.0.0),最新版解决了但是要收费9K(2022-01-21日). 首先需要实现如下: Multi ...

最新文章

  1. java json设置编码_我们如何用Java编码JSON对象?
  2. python测试工程师招聘_招聘软件测试工程师,限女生
  3. 《雷达技术丛书》分享
  4. Spring/Spring MVC/Spring Boot自动装配机制介绍
  5. leetcode 459. 重复的子字符串(Java版)
  6. powershell新建python文件_powershell如何打开Python
  7. 使用ansible 批量分发SSH Key
  8. python 通过ip获取城市_python shell根据ip获取主机名代码示例
  9. mysql mvcc实例讲解_轻松理解MYSQL MVCC 实现机制
  10. SQL63 刷题通过的题目排名
  11. 关于学习web的自制roadmap
  12. Perl 语言流行度处于历史最低点
  13. 非常实用的“绿色电子地图”
  14. 智能音箱音效哪个好_四大智能音箱,你觉得哪个才是最好用的?
  15. 文件上传之黑名单绕过
  16. 缠论-2011.4.11晚
  17. c语言银行信用卡卡管理系统,自编自导多人多卡信用卡管理系统
  18. Java 实现 word 文档的在线签字盖章功能
  19. [ICCV 2017] Predicting Visual Exemplars of Unseen Classes for Zero-Shot Learning
  20. 【附代码】图像分类 — 测评指标

热门文章

  1. C++中的const变量和引用
  2. 提供非法计算机工具罪,提供非法侵入或者控制计算机信息系统的程序、工具罪...
  3. 辰皇怎么过鸿蒙,《诛仙网游》求个辰皇单刷鸿蒙的讲解攻略,视频最好
  4. 常州工学院数据结构作业 第8章 图
  5. 仿「ONE · 一个」 的微信小程序 - 每日一个
  6. KEIL5 中 .PACK文件的制作
  7. Pycharm中批量添加单引号,双引号的方法(爬虫Headers中批量加引号)
  8. 如何批量提取文件名到excel?
  9. 动态的GIF图怎么在电脑上制作
  10. Mac电脑终端程序如何切换shell命令?