七、动态菜单—递归组件的使用

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

layout布局

七、动态菜单—递归组件的使用,vue3.0,框架搭建,vue.js,前端,javascript

左侧菜单menu页面刷新后默认高亮

七、动态菜单—递归组件的使用,vue3.0,框架搭建,vue.js,前端,javascript

七、动态菜单—递归组件的使用,vue3.0,框架搭建,vue.js,前端,javascript文章来源地址https://www.toymoban.com/news/detail-827709.html

左侧菜单组件 Menu

<template>
  <template v-for="(item, index) in menuList" :key="item.path">
    <!-- 没有子路由 -->
    <template v-if="!item.children">
      <el-menu-item v-if="!item.meta.hidden" :index="item.path">
        <template #title>
          <span>{{ item.meta.title }}</span>
        </template>
      </el-menu-item>
    </template>
    <!-- 有且只有一个子路由 -->
    <template v-if="item.children && item.children.length == 1">
      <el-menu-item index="item.children[0].path" v-if="!item.children[0].meta.hidden">
        <template #title>
          <span>{{ item.children[0].meta.title }}</span>
        </template>
      </el-menu-item>
    </template>
    <!-- 有子路由且个数大于一个 -->
    <el-sub-menu :index="item.path" v-if="item.children && item.children.length >= 2">
      <template #title>
        <span>{{ item.meta.title }}</span>
      </template>
      <!-- 使用递归组件:必须给组件命名 -->
      <Menu :menuList="item.children"></Menu>
    </el-sub-menu>
  </template>
</template>

<script setup lang="ts">
//获取父组件传递过来的全部路由数组
defineProps(['menuList'])
</script>
<script lang="ts">
export default {
  name: 'Menu',
}
</script>
<style lang="scss" scoped></style>

  1. 多级路由时使用递归组件:必须给组件命名
  2. 因为每一个项我们要判断俩次(是否要隐藏,以及子组件个数),所以在el-menu-item外面又套了一层模板
  3. 当子路由个数大于等于一个时,并且或许子路由还有后代路由时。这里我们使用了递归组件。递归组件需要命名(另外使用一个script标签,vue2格式)

路由

{
  path: '/acl',
    component: () => import('@/layout/index.vue'),
    name: 'Acl',
    meta: {
    hidden: false,
      title: '权限管理',
      icon: 'Lock',
    },
    children: [
        {
          path: '/acl/user',
          component: () => import('@/views/acl/user/index.vue'),
          name: 'User',
          meta: {
            hidden: false,
            title: '用户管理',
            icon: 'User',
          },
        },
        {
          path: '/acl/role',
          component: () => import('@/views/acl/role/index.vue'),
          name: 'Role',
          meta: {
            hidden: false,
            title: '角色管理',
            icon: 'UserFilled',
          },
        },
        {
          path: '/acl/permission',
          component: () => import('@/views/acl/permission/index.vue'),
          name: 'Permission',
          meta: {
            hidden: false,
            title: '菜单管理',
            icon: 'Monitor',
          },
        },
      ],
    },

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

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

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

相关文章

  • 【Vue3 博物馆管理系统】使用Vue3、Element-plus菜单组件构建前台用户菜单

    第一章 定制上中下(顶部菜单、底部区域、中间主区域显示)三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 [第三章 使用Vue3、Element-plus菜单组件构建轮播图] [第四章 使用Vue3、Element-plus菜单组件构建组图文章] 上一章节给我们把博物馆管理系统打了个地基,基本

    2024年02月13日
    浏览(64)
  • vue3使用Elementplus 动态显示菜单icon不生效

    菜单icon由后端提供,直接用的字符串返回,前端使用遍历显示,发现icon不会显示 后端提供的是字符串,那么在component :is=\\\"menu.icon\\\"/处读取到的也是字符串,而component组件中要求是一个能渲染的组件,类似如下结构: 想当然的,如果后端直接返回组件形式是不是就可以了。

    2024年02月11日
    浏览(41)
  • vue3+elementui-plus实现无限递归菜单

    效果图 实现方式是:通过给定的数据结构层数来动态生成多级菜单 下面的方法可以实现重置菜单选项为默认项(需求场景:左侧菜单切换时,上方菜单就要重置为默认选项) 通过给el-menu添加:key=\\\"menuKey\\\"实现。 实现原理::key=“menuKey” 是 Vue 中的一个特殊语法,用于控制组件

    2024年04月24日
    浏览(40)
  • 搭建vue3项目+按需引入element-ui框架组件

    场景 :使用vue create脚手架快速搭建vue的项目 前提 :需要安装node.js和cnpm以及yarn 并且cnpm需要设置为淘宝镜像,cnpm和yarn安装教程网上很多可以自行搜索 查看安装的版本(显示版本号说明安装成功) 1.cmd窗口跳到需要新建项目的文件夹下,使用vue create 2.我这里选择第三个Ma

    2024年02月16日
    浏览(64)
  • el-menu使用递归组件实现多级菜单组件

    vue3+element plus版:点击此处 创建外层菜单 AsideMenu.vue 组件和子菜单项 AsideSubMenu.vue 组件,在 AsideSubMenu 中进行递归操作。 AsideMenu.vue文件内容如下: 判断高亮状态的activeMenu方法中的判断matchPath属性可以让多个路由不同的页面匹配同一个菜单高亮状态,因为菜单高亮状态是根据

    2023年04月12日
    浏览(45)
  • vue3 组件自己引用自己 递归组件 组件命名

    本人前端开发一枚,以前一直用vue2.0,为了更新自己掌握的技术学习如何使用vue3.0。 在vue3.0项目中想要实现菜单组件,要使用到递归组件的方法,发现不知道怎么给组件重命名!! 在vue2.0中想要实现递归组件方式很简单,只要给组件命名,然后自己调用即可: 然而在vue3.0中

    2024年02月06日
    浏览(52)
  • Vue3+elementPlus组件递归

    下面以实现导航菜单为例 1、父页面: 2、递归组件:

    2024年04月09日
    浏览(74)
  • vue3 element-plus动态菜单及动态图标

    引入element-plus 注册图标组件 动态引入图标代码 完整代码 路由如下

    2024年01月18日
    浏览(47)
  • vue3 使用defineAsyncComponent与component标签实现动态渲染组件

    内容有些啰嗦,内容记载了当时遇到了bug以及解决问题的思路。 业务场景简述: 前端做配置化组件,通过url内的唯一标识,请求后端sql 哪取页面配置信息,前端通过配置信息动态渲染查询表单,导出、表格,toolbar以及动态弹窗;该动态渲染组件的功能,就是渲染的toolbar内

    2024年02月05日
    浏览(56)
  • vue3实现动态菜单和动态路由和刷新后白屏处理

    项目中,当每一个角色得到的界面不一致的时候,我们就不能使用静态菜单了,而是要从后端得到动态的菜单数据,然后动态的将菜单数据展示在界面上。 除了在界面展示,也还要将界面的路由动态添加,在路由动态添加之后,你可能会出现刷新界面,界面变白的情况,页面

    2024年02月06日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包