位置: 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写接口)

  • 华为b5如何戴耳朵上(华为b5如何佩戴耳朵)

    华为b5如何戴耳朵上(华为b5如何佩戴耳朵)

  • 苹果手机低数据模式是什么意思(苹果手机低数据模式需要打开吗)

    苹果手机低数据模式是什么意思(苹果手机低数据模式需要打开吗)

  • 小米省钱购是小米的吗(小米省钱购提现钱提到哪里了)

    小米省钱购是小米的吗(小米省钱购提现钱提到哪里了)

  • 苹果siri不说话只显示字(苹果siri不说话怎么办)

    苹果siri不说话只显示字(苹果siri不说话怎么办)

  • 企业微信异常解决办法(企业微信解除异常)

    企业微信异常解决办法(企业微信解除异常)

  • 苹果点阵投影器坏了能修吗(苹果点阵投影器没断电碰了会坏吗)

    苹果点阵投影器坏了能修吗(苹果点阵投影器没断电碰了会坏吗)

  • 苹果手机怎么看拦截的短信(苹果手机怎么看海拔高度)

    苹果手机怎么看拦截的短信(苹果手机怎么看海拔高度)

  • win10装office32位还是64位(32位系统安装office)

    win10装office32位还是64位(32位系统安装office)

  • 华为主题会员过期后主题还能用吗(华为主题会员过期后字体还能用吗)

    华为主题会员过期后主题还能用吗(华为主题会员过期后字体还能用吗)

  • 抖音修改资料有影响吗(抖音修改资料多久生效)

    抖音修改资料有影响吗(抖音修改资料多久生效)

  • 苹果手机浅色深色切换不了(苹果手机浅色深色哪个省电)

    苹果手机浅色深色切换不了(苹果手机浅色深色哪个省电)

  • 微信显示对方账号异常已被限制登录(微信显示对方账号安全性未知是什么意思)

    微信显示对方账号异常已被限制登录(微信显示对方账号安全性未知是什么意思)

  • 出厂设置是什么意思(手机恢复出厂设置是什么)

    出厂设置是什么意思(手机恢复出厂设置是什么)

  • 华为p20指纹位置在哪(华为p20手机指纹)

    华为p20指纹位置在哪(华为p20手机指纹)

  • 4ghd收费吗(4g十hd业务是免费的吗?)

    4ghd收费吗(4g十hd业务是免费的吗?)

  • 苹果7内存有几种(苹果7内存有几种型号)

    苹果7内存有几种(苹果7内存有几种型号)

  • 红米k30需不需要贴膜(红米k30s需要带套吗)

    红米k30需不需要贴膜(红米k30s需要带套吗)

  • 微信阅读量算人数还是次数(微信阅读量能挣钱吗)

    微信阅读量算人数还是次数(微信阅读量能挣钱吗)

  • 小米哪款手机有双扬声器(小米哪款手机有实况)

    小米哪款手机有双扬声器(小米哪款手机有实况)

  • 手机格式化后如何恢复数据(手机格式化后如何激活手机)

    手机格式化后如何恢复数据(手机格式化后如何激活手机)

  • beats耳机怎么连蓝牙(beats耳机怎么连接安卓手机)

    beats耳机怎么连蓝牙(beats耳机怎么连接安卓手机)

  • 怎样发群名片(怎样发送微信群名片给好友)

    怎样发群名片(怎样发送微信群名片给好友)

  • 竖排版的数字怎么排(竖排版数字怎么写)

    竖排版的数字怎么排(竖排版数字怎么写)

  • 苹果库乐队在哪里(苹果库乐队哪款电脑可以用)

    苹果库乐队在哪里(苹果库乐队哪款电脑可以用)

  • 怎么隐藏洋淘秀(自己的洋淘秀怎么隐藏)

    怎么隐藏洋淘秀(自己的洋淘秀怎么隐藏)

  • 监控必须有网才能用吗(网络监控必须有网么)

    监控必须有网才能用吗(网络监控必须有网么)

  • win10excel如何变中文(win10怎么把excel调成中文模式)

    win10excel如何变中文(win10怎么把excel调成中文模式)

  • opporenoz处理器相当于骁龙多少(opporenoz的处理器)

    opporenoz处理器相当于骁龙多少(opporenoz的处理器)

  • 火爆全网的ChatGPT让AI回答你的任何问题!国内免费用!!(火爆全网的头像男)

    火爆全网的ChatGPT让AI回答你的任何问题!国内免费用!!(火爆全网的头像男)

  • 个人房产投资入股公司过户
  • 三代手续费怎么申请返还
  • 减免增值税款怎么算
  • 间接费用分配方法不包括哪些
  • 出租的土地使用权是无形资产吗
  • 固定资产原值的含义
  • 法人投资转入旧机器无发票怎么入账?
  • 单位的收入是刷卡怎么做账
  • 分支机构企业所得税计提和缴纳数额不一致怎么办?
  • 退货后发票还能拿去抵税吗
  • 计提汇算清缴所得税分录
  • 小规模税局代增值税专用发票怎么交税
  • 防伪开票系统税票如何抵扣
  • 环评费用计入哪个会计科目
  • 税控盘额度
  • 子公司之间固定资产划转 增值税会计处理
  • 固定资产出租需要交什么税
  • 国家统计局一套表平台网址
  • 递延收益的会计科目
  • php如何实现伪静态
  • 为什么win+d
  • 反射调用set方法
  • 保险委托支付
  • 经营出租设备属于什么科目
  • 销售折让负数会计分录
  • 所有者权益变动额怎么算
  • 辅助生产成本包含哪些
  • 公司需要购买物品
  • CUDA(10.2)+PyTorch安装加配置 详细完整教程
  • cocos creator脚本开发指南
  • php flock函数
  • vue引入svg图片
  • javascript编写程序
  • 国税系统怎么认证发票
  • 旅客运输服务进项税额的计算公式
  • rk3566 rk3288
  • domain codomain range
  • Docker 搭建api
  • 企业所得税那些是免税的收入
  • 建筑业用的会计账簿
  • 实际缴纳的增值税用哪个科目
  • 会议期间的餐费算会务费吗
  • 以前年度未入账固定资产账务处理
  • sql server管理员权限
  • 企业收到的
  • 个人扣税是怎么扣的
  • 客户提现产生的费用计入
  • 公司客户招待费用标准
  • 短期借款的相关法规
  • 哪些账户期末结账后一定无余额
  • 售后回租租赁合同买车有效吗
  • 5000以下固定资产一次性计提折旧政策
  • 无追索权保理的说法
  • 企业可以不交残保金吗
  • 固定资产处置有净值怎么处理
  • 农行网银只有一张卡吗
  • 记账凭证烂了要紧吗
  • mysql found_row()使用详解
  • mysql数据库sid
  • sql根据名字查询
  • 安装sql server需要注意什么
  • os x 10.10.5
  • mcclauncher.exe
  • linux使用ssh命令
  • unity移动端教程
  • 判断div滑动到底怎么操作
  • 九九乘法表vb
  • python数据结构教程
  • perl字符串替换 ~s
  • unity ui图层
  • nodejs怎么调试
  • unity 循环列表
  • 置顶朋友圈所有人能看到吗
  • android布局背景颜色的代码
  • 国家税务局服务宗旨是什么
  • 收到红字信息表不能直接开具
  • 合作社的税率是多少
  • 税务系统全面从严治党工作会议
  • 云南人社12333app官网
  • 会计的各种税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设