Vue3使用递归组件封装El-Menu多级菜单

这篇具有很好参考价值的文章主要介绍了Vue3使用递归组件封装El-Menu多级菜单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue3使用递归组件封装El-Menu多级菜单,Vue3,vue.js,javascript,前端文章来源地址https://www.toymoban.com/news/detail-703078.html

<template>
    <aside class="menu">
        <el-scrollbar>
            <el-menu class="menu-main" router :default-active="route.path" unique-opened background-color="#18214C"
                text-color="#fff">
                <menuItem v-for="item in menuList" :item="item" :key="item.path" />
            </el-menu>
        </el-scrollbar>
    </aside>
</template> 
<script setup>
import menuItem from "./components/menuItem.vue"
import { useRoute } from "vue-router"
const route = useRoute()

const menuList = [
    {
        path: "/index",
        component: () => import("@/views/index.vue"),
        name: "index",
        meta: {
            title: "一级菜单"
        }
    },
    {
        path: "/level",
        name: "level",
        meta: {
            title: "多级菜单"
        },
        children: [
            {
                path: "/level/level-1",
                name: "level-1",
                meta: {
                    title: "多级菜单-1"
                },
                children: [
                    {
                        path: "/level/level-1/level-1-1",
                        component: () => import("@/views/level/level-1/level-1-1.vue"),
                        name: "level-1-1",
                        meta: {
                            title: "多级菜单-1"
                        }
                    }]
            },
            {
                path: "/level/level-2",
                component: () => import("@/views/level/level-2.vue"),
                name: "level-2",
                meta: {
                    title: "多级菜单-2"
                }
            }
        ]
    }
]


</script>
<style lang='scss' scoped>
.menu {
    height: 100vh;
    overflow: hidden;
    background-color: #18214C;

    &-main {
        border: none;
    }

    &-main:not(.el-menu--collapse) {
        width: 220px;
    }
}
</style>
<template>
    <template v-if="item.meta && !item.meta.hidden">
        <el-sub-menu :index="item.path" :key="item.path" v-if="item?.children?.length > 0">
            <template #title>
                <el-icon>
                    <Aim />
                </el-icon>
                <span>{{ item.meta.title }}</span>
            </template>
            <menuItem v-for="child in item.children" :item="child" :key="child.path" />
        </el-sub-menu>
        <el-menu-item v-else :index="item.path">
            <el-icon>
                <Aim />
            </el-icon>
            <template #title>{{ item.meta.title }}</template>
        </el-menu-item>
    </template>
</template>
<script setup name="menuItem">
import { Aim } from '@element-plus/icons-vue'
const props = defineProps({
    item: {
        type: Object,
        default: () => { },
    },
})
</script>
<style lang='scss' scoped>
.el-menu-item.is-active {
    color: #fff;
    background: #2260FF;
}
</style>

到了这里,关于Vue3使用递归组件封装El-Menu多级菜单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • vue3+element plus 中el-menu 怎么实现路由跳转
  • 使用Vue+Vue-router+el-menu实现菜单功能实战

    使用Vue+Vue-router+el-menu实现菜单功能实战

    上节回顾 上一小节我们使用 H5+CSS3 实现了管理平台的 架构布局 ,并且通过 Vuex 的使用,获取到前端数据本地化存储的username,绑定到右上角进行全局展示。还不了解上下文的同学可以回顾一下 使用Vue+Vuex+CSS3完成管理端响应式架构模板实战 。 本节介绍 本小节已经是专栏的

    2023年04月15日
    浏览(9)
  • 12 使用Vue+Vue-router+el-menu实现菜单功能实战

    12 使用Vue+Vue-router+el-menu实现菜单功能实战

    上节回顾 上一小节我们使用 H5+CSS3 实现了管理平台的 架构布局 ,并且通过 Vuex 的使用,获取到前端数据本地化存储的username,绑定到右上角进行全局展示。还不了解上下文的同学可以回顾一下 使用Vue+Vuex+CSS3完成管理端响应式架构模板实战 。 本节介绍 本小节已经是专栏的

    2024年02月16日
    浏览(39)
  • vue 学习笔记 【ElementPlus】el-menu 折叠后图标不见了

    vue 学习笔记 【ElementPlus】el-menu 折叠后图标不见了

    项目当前版本 运行过程中,菜单折叠后,图标不见了 图标不见了 解决办法是 把el-icon 从#title 中提取出来 如 运行结果 el-icon 还是要放于#title里,否则显示不正常

    2024年02月15日
    浏览(30)
  • Vue - 完美解决 Element UI 侧边导航菜单 <el-menu> 出现滚动条,去掉 Element 侧边导航组件的横纵滚动条(但滚动功能依然保留,仅仅是去掉 “滚动条“)100% 解决方案

    网上的教程都不好使(甚至还有的提议在全局去掉,这么做万一需要怎么办?),本文可完美 100% 解决,代码简洁高效。 本文实现了 Element UI 组件库中,去掉 NavMenu 侧边导航菜单组件出现的滚动条! 并且是 “局部” 的,也就是说只去掉本页侧边栏菜单的滚动条,不会影响全

    2024年02月11日
    浏览(88)
  • Vue3:Elemenu-Plus递归型菜单组件封装(2)

            在上一篇文章中,以Vue2的选项式 API风格,封装了递归型菜单组件,但是这其中存在着一些问题,例如:         【1】子组件menuList.vue中,通过this.$emit()方式定义的事件,在Vue3组合式API风格父组件中可能会被执行多次。之所以说是可能,是因为我这测试中确实遇

    2024年02月13日
    浏览(7)
  • vue3+elementplus基于el-table-v2封装公用table组件

    vue3+elementplus基于el-table-v2封装公用table组件

    主要是针对表格进行封装,不包括查询表单和操作按钮。 梳理出系统中通用表格的功能项,即表格主体的所有功能,生成columns列头数据、生成data表体数据、拖拉列宽、分页、生成中文列名、自定义列宽width 效果如下: 父级引用: 父组件: 子组件: 子组件: 父组件: 以上

    2024年02月10日
    浏览(13)
  • 【element-ui 中 el-tabs+el-menu 实现点击菜单 新增导航tab页 并实现关闭其他、当前、所有的功能】

    【element-ui 中 el-tabs+el-menu 实现点击菜单 新增导航tab页 并实现关闭其他、当前、所有的功能】

    element-ui 【el-tabs+el-menu 实现点击菜单 新增导航tab页 并实现关闭其他、当前、所有的功能】 文章分3个部分 el-tabs 以及右击菜单代码 vuex 代码及其方法实现 router路由信息常规写法el-menu写法常规(自行去掉修饰部分) el-tabs 以及右击菜单代码

    2024年02月11日
    浏览(8)
  • vue3——递归组件的使用

    vue3——递归组件的使用

    该文章是在学习 小满vue3 课程的随堂记录 示例均采用 script setup ,且包含 typescript 的基础用法 递归组件 的使用场景,如 无限级的菜单 ,接下来就用菜单的例子来学习 先把菜单的基础内容写出来再说 父组件 子组件 如图,上述代码已经完成了 第一层 菜单数据的渲染: 深层

    2024年02月11日
    浏览(6)
  • vue3的vue-chart组件封装(包含数据刷新按需使用)

    vue3的vue-chart组件封装(包含数据刷新按需使用)

    v-chart封装数据更新效果 初始数据展示:  刷新数据展示: v-charts Description https://v-charts.js.org/#/ npm i v-charts echarts -S / yarn add v-charts echarts -S 先别急着直接定义option对象,可以参考官网这个方法: Documentation - Apache ECharts 也就是通过实例,调用setOption这个方法,可以不通过传递

    2024年02月02日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包