Ant Design Vue 递归Menu
使用vue函数式组件创建
antdvue1.x
Vue.component('LmSubMenu', { functional: true, render: function (createElement, context) { console.log(context) let children = []; context.props.menuInfo.child.forEach((item, index) => { if (item.child) { children.push( createElement('lm-sub-menu', { props: {menuInfo:item} }) ) } else { children.push(createElement('a-menu-item', { //普通html特性 attrs: { key: item.href, }, }, item.title)) } }); return createElement('a-sub-menu', [ createElement('span', { slot: 'title' }, [ createElement('a-icon', { //普通html特性 attrs: { type: 'team', }, }), createElement('span', context.props.menuInfo.title)]), ...children ]) } })
使用
<a-menu class="a-menu" mode="inline" theme="dark" :inline-collapsed="collapsed"> <template v-for="item in initinfo.menuInfo"> <a-menu-item v-if="!item.child" :key="item.href"> <a-icon type="pie-chart"></a-icon> <span>{{ item.title }}</span> </a-menu-item> <lm-sub-menu v-else :menu-info="item"></lm-sub-menu> </template> </a-menu>
antdvue 2.x
/* * 自定义子菜单1.0.0 * * 使用前必须饮用了 vue3.x.js 与 antd2.x.js */ var LmSubMenu = { name: 'LmSubMenu', props: { menuInfo: { type: Object, default: () => ({}), }, }, template: ` <a-sub-menu> <template v-if="menuInfo.icon" #icon><span :class="menuInfo.icon"></span></template> <template #title>{{ menuInfo.title }}</template> <template v-for="item in menuInfo.child" :key="item.href"> <a-menu-item v-if="!item.child" :key="item.href"> <template v-if="item.icon" #icon><span :class="item.icon"></span></template> {{ item.title }} </a-menu-item> <lm-sub-menu v-else :menu-info="item"></lm-sub-menu> </template> </a-sub-menu> ` }
使用
<a-menu class="a-menu" mode="inline" theme="dark" :inline-collapsed="collapsed"> <template v-for="item in initinfo.menuInfo"> <a-menu-item v-if="!item.child" :key="item.href"> <template v-if="item.icon" ><span :class="item.icon"></span></template> <span>{{ item.title }}</span> </a-menu-item> <lm-sub-menu v-else :menu-info="item"></lm-sub-menu> </template> </a-menu>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2020-08-19 JRebel插件使用详解
2020-08-19 Spring配置项<context:annotation-config>的解释说明