我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue中怎么递归多级菜单

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue中怎么递归多级菜单

Vue中怎么递归多级菜单,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

考虑以下菜单数据:

[
 {
 name: "About",
 path: "/about",
 children: [
  {
  name: "About US",
  path: "/about/us"
  },
  {
  name: "About Comp",
  path: "/about/company",
  children: [
   {
   name: "About Comp A",
   path: "/about/company/A",
   children: [
    {
    name: "About Comp A 1",
    path: "/about/company/A/1"
    }
   ]
   }
  ]
  }
 ]
 },
 {
 name: "Link",
 path: "/link"
 }
];

需要实现的效果:

 Vue中怎么递归多级菜单

首先创建两个组件 Menu 和 MenuItem

// Menuitem

<template>
 <li class="item">
 <slot />
 </li>
</template>

MenuItem 是一个 li 标签和 slot 插槽,允许往里头加入各种元素

<!-- Menu -->

<template>
 <ul class="wrapper">
 <!-- 遍历 router 菜单数据 -->
 <menuitem :key="index" v-for="(item, index) in router">
  <!-- 对于没有 children 子菜单的 item -->
  <span class="item-title" v-if="!item.children">{{item.name}}</span>

  <!-- 对于有 children 子菜单的 item -->
  <template v-else>
  <span @click="handleToggleShow">{{item.name}}</span>
  <!-- 递归操作 -->
  <menu :router="item.children" v-if="toggleShow"></menu>
  </template>
 </menuitem>
 </ul>
</template>

<script>
 import MenuItem from "./MenuItem";

 export default {
 name: "Menu",
 props: ["router"], // Menu 组件接受一个 router 作为菜单数据
 components: { MenuItem },
 data() {
  return {
  toggleShow: false // toggle 状态
  };
 },
 methods: {
  handleToggleShow() {
  // 处理 toggle 状态的是否展开子菜单 handler
  this.toggleShow = !this.toggleShow;
  }
 }
 };
</script>

Menu 组件外层是一个 ul 标签,内部是 vFor 遍历生成的 MenuItem

这里有两种情况需要做判断,一种是 item 没有 children 属性,直接在 MenuItem 的插槽加入一个 span 元素渲染 item 的 title 即可;另一种是包含了 children 属性的 item 这种情况下,不仅需要渲染 title 还需要再次引入 Menu 做递归操作,将 item.children 作为路由传入到 router prop

最后在项目中使用:

<template>
 <div class="home">
 <menu :router="router"></menu>
 </div>
</template>

<script>
 import Menu from '@/components/Menu.vue'

 export default {
 name: 'home',
 components: {
  Menu
 },
 data () {
  return {
  router: // ... 省略菜单数据
  }
 }
 }
</script>

最后增加一些样式:

MenuItem:

<style lang="stylus" scoped>
 .item {
 margin: 10px 0;
 padding: 0 10px;
 border-radius: 4px;
 list-style: none;
 background: skyblue;
 color: #fff;
 }
</style>

Menu:

<style lang="stylus" scoped>
 .wrapper {
 cursor: pointer;

 .item-title {
  font-size: 16px;
 }
 }
</style>

Menu 中 ul 标签内的代码可以单独提取出来,Menu 作为 wrapper 使用,递归操作部分的代码也可以单独提取出来

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue中怎么递归多级菜单

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue递归组件怎么实现elementUI多级菜单

这篇“vue递归组件怎么实现elementUI多级菜单”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue递归组件怎么实现e
2023-07-02

怎么使用el-menu递归实现多级菜单组件

今天小编给大家分享一下怎么使用el-menu递归实现多级菜单组件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 效果:2
2023-07-06

vue中怎么实现左侧菜单和树形图递归

本文小编为大家详细介绍“vue中怎么实现左侧菜单和树形图递归”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue中怎么实现左侧菜单和树形图递归”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果图如下所示:先说说
2023-06-20

vue怎么实现左侧菜单树形图递归

这篇文章主要讲解了“vue怎么实现左侧菜单树形图递归”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么实现左侧菜单树形图递归”吧!先说说遇到的坑,由于是子父组件,当时传递使用的是子父组
2023-07-04

el-menu递归实现多级菜单组件的示例

本文主要介绍了el-menu使用递归组件实现多级菜单组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-15

怎么使用Vue递归组件实现树形菜单

本文小编为大家详细介绍“怎么使用Vue递归组件实现树形菜单”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Vue递归组件实现树形菜单”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下图,点击后打开二级
2023-07-04

VUE递归树形怎么实现多级列表

今天小编给大家分享一下VUE递归树形怎么实现多级列表的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是递归?简单来说就是在
2023-07-02

Shell怎么实现多级菜单系统

这篇文章主要介绍“Shell怎么实现多级菜单系统”,在日常操作中,相信很多人在Shell怎么实现多级菜单系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shell怎么实现多级菜单系统”的疑惑有所帮助!接下来
2023-06-09

Java中怎么实现多线程递归

这篇文章将为大家详细讲解有关Java中怎么实现多线程递归,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。public voidParallelRecursive(final Execut
2023-06-17

MySql多级菜单查询怎么实现

本篇内容主要讲解“MySql多级菜单查询怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySql多级菜单查询怎么实现”吧!背景工作中(尤其是传统项目中)经常遇到这种需要,就是树形结构的查
2023-03-10

使用CSS怎么实现多级菜单

这期内容当中小编将会给大家带来有关使用CSS怎么实现多级菜单,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

AntDesign Vue中Menu菜单怎么用

这篇文章将为大家详细讲解有关AntDesign Vue中Menu菜单怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。常用属性属性说明默认值mode菜单类型,现在支持垂直、水平、和内嵌模式三种verti
2023-06-22

怎么在VBS中利用递归创建多级目录文件夹

今天就跟大家聊聊有关怎么在VBS中利用递归创建多级目录文件夹,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。核心代码CreateFolders "d:\jb51test\1\2\3\4
2023-06-08

编程热搜

目录