位置: IT常识 - 正文

ant-design-vue导航菜单a-menu的使用解读(vue导航方式)

编辑:rootadmin
这篇文章主要介绍了ant-design-vue导航菜单a-menu的使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录

推荐整理分享ant-design-vue导航菜单a-menu的使用解读(vue导航方式),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:ant-design-vue教程,ant-design-vue教程,ant-design-vue导航点击没有选中,vue 导航,ant-design-vue导航菜单动态渲染,vue 导航,ant-design-vue导航点击没有选中,ant-design-vue导航菜单动态渲染,内容如对您有帮助,希望把文章链接给更多的朋友!

一、效果二、关键的API三、注意事项四、代码

此文章包含了递归生成三级菜单,刷新状态保留,只展开一个父级菜单等常见问题。

一、效果

可以看到递归生成三级菜单,刷新状态保留,只展开一个父级菜单等常见问题得以解决。我自己的电脑设备老旧,反应缓慢的问题请忽略。

二、关键的API

说实话遇到问题了不知道该怎么解决,说白了还是不懂得API的使用,对相关的API不够了解,熟悉了API怎么操作都行。下面说说用到但是又容易混淆的API。

1.defaultSelectedKeys 默认选中的key

ant-design-vue导航菜单a-menu的使用解读(vue导航方式)

这里的key对应的是a-menu-item上面绑定的key,如果被选中,会进行导航的跳转以及被给予高亮状态。

2.openKeys 展开的a-sub-menu的key

这里的key对应的是a-sub-menu上面绑定的key。如果绑定在a-menu上,对应的子菜单会打开。

3.selectedKeys 受控选中的key

这里的key对应的是a-menu-item上面绑定的key,如果被选中,会进行导航的跳转以及被给予高亮状态。

与defaultSelectedKeys 有什么区别:

这两个属性为二选一使用,如果同时使用时,defaultSelectedKeys无效,将会以selectedKeys为准。如果你只是希望指定一个初始化选中的菜单项,请使用defaultSelectedKeys;如果你需要每次通过传入不同的props改变Menu组件的选中项,请使用selectedKeys。三、注意事项

此处强调一点,如果是一级以及二级菜单的生成,普通的两层for循环结合递归以及v-if生成即可。

如果是想使用a-menu生成三级或者三级以上的菜单,那么就需要定义在单文件内定义函数式组件。那为什么不推荐单文件的形式定义组件,而是使用函数式组件?

以下是官方文档的说明:

四、代码<template><a-layout id="components-layout-demo-custom-trigger"><a-layout-sider theme="light" v-model="collapsed" :trigger="null" collapsible><div ><a-menu:inlineIndent="inlineIndent":defaultSelectedKeys="[$route.path]":openKeys="openKeys"mode="inline":inline-collapsed="collapsed"@openChange="onOpenChange"@click="menuClick"><!-- 菜单遍历的开始 --><template v-for="item in list"><!-- 如果当前遍历项没有children,视为子菜单项,注意所有的key都是path用于路由跳转,以及当前选中记录 --><a-menu-item v-if="!item.children" :key="item.path"><i :class="item.icon" /><span>{{ item.title }}</span></a-menu-item><!-- 否则视为子菜单,传入菜单信息并且运用下面定义的函数式组件 --><sub-menu v-else :key="item.path" :menu-info="item" /></template></a-menu></div></a-layout-sider><a-layout><a-layout-content :style="{ margin: '24px 16px', padding: '24px', background: '#fff', minHeight: '280px' }"><router-view/></a-layout-content></a-layout></a-layout></template><script>import { Menu } from 'ant-design-vue';// 定义函数式组件const SubMenu = {template: `<a-sub-menu :key="menuInfo.path" v-bind="$props" v-on="$listeners"><span slot="title"><i :class="menuInfo.icon" /><span>{{ menuInfo.title }}</span></span><template v-for="item in menuInfo.children"><a-menu-item v-if="!item.children" :key="item.path"><i :class="item.icon" /><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,// 接收父级传递过来的菜单信息menuInfo: {type: Object,default: () => ({}),},},};export default {data() {return {// 菜单缩进inlineIndent:12,// 默认不折叠collapsed: false,// 全部顶级父节点,用来控制所有父级菜单只展开其中的一项,可用遍历菜单信息进行赋值rootSubmenuKeys: ['/infomationManage','/safeInfoManage','/qualityInfoManage'],// 展开的父菜单项openKeys: [],// 选中的子菜单项defaultSelectedKeys: [this.$route.path],// 菜单信息,可从后台获取list: [{key: '1',title: '项目信息管理',path: '/infomationManage',icon:'iconfont icon-information'},{key: '2',title: '安全信息管理',path: '/safeInfoManage',icon:'iconfont icon-anquan',children: [{key: '2.1',title: '安全风险管理',path: '/safeRisk',icon:'',children: [{key: '2.1.1',title: '风险分类管理',path: '/riskClassifyManage',icon:'',},{key: '2.1.2',title: '分类辨识',path: '/classifyIdentity',icon:'',}],},],},{key: '3',title: '质量信息管理',path: '/qualityInfoManage',icon:'iconfont icon-zhiliang',children:[{key: '3.1',title: '质量控制点管理',path: '/controlPointManage',icon:'',}]}],}},created(){// 将从缓存中取出openKeysconst openKeys = window.sessionStorage.getItem('openKeys')if(openKeys){// 存在即赋值this.openKeys = JSON.parse(openKeys)}},methods: {// 点击菜单,路由跳转,注意的是当点击MenuItem才会触发此函数menuClick({ item, key, keyPath }) {// 获取到当前的key,并且跳转this.$router.push({path: key})},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] : [];}},},// 注册局部组件components: {'sub-menu': SubMenu,},};</script><style></style>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

本文链接地址:https://www.jiuchutong.com/zhishi/311725.html 转载请保留说明!

上一篇:java初始化变量的注意点(java变量初始化的两种方式)

下一篇:ajax - 接口、表单、模板引擎(ajax写接口)

  • 苹果13pro怎么关闭来电闪光灯(苹果13pro怎么关机重启)

    苹果13pro怎么关闭来电闪光灯(苹果13pro怎么关机重启)

  • vivox50ufs规格是多大的(vivox21ufs是多少)

    vivox50ufs规格是多大的(vivox21ufs是多少)

  • 华为nova7可以隐藏应用吗(华为nova7可以隐藏桌面图标吗)

    华为nova7可以隐藏应用吗(华为nova7可以隐藏桌面图标吗)

  • nova4和nova4e的区别(nova4和nova4e的区别哪个好)

    nova4和nova4e的区别(nova4和nova4e的区别哪个好)

  • 苹果手机微信怎么横屏显示(苹果手机微信怎么开美颜功能设置)

    苹果手机微信怎么横屏显示(苹果手机微信怎么开美颜功能设置)

  • 群文件删除失败(群文件无法删除)

    群文件删除失败(群文件无法删除)

  • 荣耀20怎么样隐藏应用(荣耀怎么样隐藏相册)

    荣耀20怎么样隐藏应用(荣耀怎么样隐藏相册)

  • 美团骑手可以自己安排时间吗(美团骑手可以自己注册接单吗)

    美团骑手可以自己安排时间吗(美团骑手可以自己注册接单吗)

  • 华为删除的视频还能找到吗(华为删除的视频和照片怎么恢复)

    华为删除的视频还能找到吗(华为删除的视频和照片怎么恢复)

  • 华为nova5pro有语音助手叫什么名字(如何开启华为nova 5 pro语音助手?)

    华为nova5pro有语音助手叫什么名字(如何开启华为nova 5 pro语音助手?)

  • 淘气值多久涨一次(淘气值几号更新一次)

    淘气值多久涨一次(淘气值几号更新一次)

  • 快手注销审核一般多久(快手注销审核中是什么意思)

    快手注销审核一般多久(快手注销审核中是什么意思)

  • 鼠标驱动自瞄教程(鼠标驱动自瞄教学)

    鼠标驱动自瞄教程(鼠标驱动自瞄教学)

  • 电脑进了一点水有事吗(电脑进了一点水但还能用)

    电脑进了一点水有事吗(电脑进了一点水但还能用)

  • 关注微信步数对方会知道吗(微信步数关注别人会被发现吗)

    关注微信步数对方会知道吗(微信步数关注别人会被发现吗)

  • 魅族备份的数据在哪恢复(魅族备份数据到电脑)

    魅族备份的数据在哪恢复(魅族备份数据到电脑)

  • 苹果键盘大写按哪个键(苹果键盘大写按键)

    苹果键盘大写按哪个键(苹果键盘大写按键)

  • 苹果手机手电筒快捷键(苹果手机手电筒怎么突然打不开了)

    苹果手机手电筒快捷键(苹果手机手电筒怎么突然打不开了)

  • 实况照片怎么发朋友圈(实况照片怎么发给别人)

    实况照片怎么发朋友圈(实况照片怎么发给别人)

  • scanregistry.exe - scanregistry是什么进程 有什么用

    scanregistry.exe - scanregistry是什么进程 有什么用

  • uniapp Android 原生插件开发(Module 扩展为例·2022)(uniapp 安卓原生)

    uniapp Android 原生插件开发(Module 扩展为例·2022)(uniapp 安卓原生)

  • HTML与JavaScript联动(html与js之间如何配合)

    HTML与JavaScript联动(html与js之间如何配合)

  • YOLOv8检测、分割和分类训练自己数据集(yolov3多分类检测)

    YOLOv8检测、分割和分类训练自己数据集(yolov3多分类检测)

  • 全国增值税发票服务平台
  • 进项税和销项税税率一样吗
  • 发票收款人和复核人、收款人规定
  • 坏账准备应计入
  • 公司购入小汽车是否可以抵扣
  • 自然人合伙企业怎么交税
  • 购进农产品取得专用发票
  • 分公司怎么做
  • 长期挂账应收账款怎么调
  • 员工劳动保险赔多少钱
  • 利息支出税前扣除标准2020
  • 机票行业一定要开发票吗?
  • 增值税税负率计算包含附加税吗
  • 增值税有差额如何调账
  • 个人所得税返还奖励财务人员做账
  • 佣金增值税
  • 兼营免税业务,如何才能享受免税的优惠政策?
  • 未缴纳出资的股东未到期能否追加为被执行人
  • 直接人工属于哪个科目
  • 会计差错更正账务处理 对股价影响
  • 预收款退回怎么写分录
  • php 静态
  • 增值税发票红冲后税款怎么办
  • 贴现会不会损害所有者权益
  • PHP:imagegrabwindow()的用法_GD库图像处理函数
  • 公司收到个人汇款怎么办
  • 贷款减值准备什么科目
  • php ladp
  • 野外生存探险家
  • 已计提完的固定资产怎么弄
  • 融资租赁会计处理流程
  • 搬迁补偿费属于什么费
  • 缴纳社保的时候工资填写多少
  • opencv dng
  • 毕业设计基础
  • vue-element
  • php 方括号
  • get_module_base
  • 简述社会保险的项目
  • python框架的作用
  • puthon zip函数
  • 织梦发布文章栏目怎么不显示
  • 小规模纳税人起征点变化历程
  • 资产负债表中其他应收款的计算公式
  • 员工福利开的专票怎么做分录
  • 研发费用固定资产如何入账
  • 保险公司披露的上一年度保险责任准备金
  • 外币折算差额怎么计算
  • 对公账户可以转让吗
  • 公司注销项目怎么办
  • 物料损失怎么入账
  • 红字信息表开错了对方已开发票怎么处理
  • 12月费用1月报销的账务处理
  • python中的django
  • mysql 创建root用户和普通用户及修改删除功能
  • win10系统预览版
  • 恢复注册表的方法
  • windows越狱软件
  • winxp怎么改壁纸
  • win10预览版和正式版区别
  • macbookpro怎么删除快捷方式
  • cocos2dx游戏开发进阶卷这本书怎么样
  • 建立批处理命令
  • 创建表格在哪里找
  • apache使用端口
  • 根据公司发展需求
  • 深入理解ts
  • 搭建nodejs环境
  • python二级怎么出题
  • node.js连接mysql数据库的方法有哪些
  • javascript操作csv
  • unity3d shader之God Ray上帝之光
  • iframe和frame
  • 如何查询车辆购置税
  • 浙江省发票勾选认证操作流程2021
  • 如何做好协税工作
  • 企业所得税率2023年
  • 棚户区改造的回迁房可以交易吗?
  • 办理税务需要开户许可证吗
  • 消费发票上的金额含税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设