Element UI左侧导航栏写法(递归组件实现)

server/2024/11/13 15:26:42/

1、左侧导航栏组件使用的是Element Ui的导航栏组件,思路:首先判断导航栏数据是否存在children,以此来实现一级菜单与多级菜单的渲染,然后使用递归组件实现多级菜单的子菜单渲染,注意使用递归组件需将菜单栏数据在父组件中从vuex中获取,再通过props传递给子组件,否则会陷入无限递归。

javascript">//父组件
<template><div><el-menudefault-active="2"class="el-menu-vertical-demo"@open="handleOpen"@close="handleClose"background-color="rgb(60, 60, 60)"text-color="#fff"active-text-color="#ffd04b"><Aside_demo :leftMenus="leftMenus"></Aside_demo></el-menu></div>
</template><script>
import Aside_demo from "../components/Aside_demo.vue";
import { mapState } from "vuex";
export default {name: "AsideLeft",data() {return {};},computed: {...mapState(["leftMenus"]),},components: {Aside_demo,},methods: {handleOpen(key, keyPath) {console.log(key, keyPath);},handleClose(key, keyPath) {console.log(key, keyPath);},},
};
</script><style>
.el-menu {width: 200px;
}
</style>
javascript">//子组件
<template><div><div v-for="(item, index) in leftMenus" :key="index"><!-- 多级导航 --><!-- 这里设置动态key值,解决高亮问题 ,并通过设置v-if来判断数据有无二级菜单数据,以此来展示二级菜单--><el-submenu :index="item.key" v-if="item.children"><template slot="title"><i class="el-icon-location"></i><span>{{ item.title }}</span></template><!-- <el-submenu index="1-4"><template slot="title">选项4</template><el-menu-item index="1-4-1">选项1</el-menu-item></el-submenu> --><!-- 这里使用递归组件,用来遍历多级菜单,将children数据传给递归组件,自己遍历自己 --><nav-menu :leftMenus="item.children"></nav-menu></el-submenu><!-- 一级导航 --><el-menu-item :index="item.key" v-else><i class="el-icon-menu"></i><span slot="title">{{ item.title }}</span></el-menu-item></div></div>
</template><script>export default {// 注意使用递归组件,name值就要改变了name: "NavMenu",data() {return {};},props:['leftMenus'],methods: {},
};
</script><style></style>

3、效果图。


http://www.ppmy.cn/server/100137.html

相关文章

ES环境搭建、ES安装

文章目录 简介与环境搭建全文检索倒排索引ElasticSearchWindows安装ES下载配置JDK环境启动ES服务 centos7安装ES下载ElasticSearch创建es用户配置JDK环境配置ElasticSearch配置JVM参数启动ElasticSearch服务常见启动报错 客户端Kibana安装下载修改Kibana.yml运行Kibana访问 ES安…

CSS

注释 /*单行*/ /* 多行 */样式选择器&#xff0c;属性名&#xff0c;属性值关键字全部使用小写字母 <head> <style> p { color: red; } </style> </head>字体属性 用于定义字体系列、大小、粗细、和文字样式 字体系列 font-family属性定义文本的…

Excel周报制作

学习视频&#xff1a; 【课程2.0】Excel基础操作|大厂周报制作|常用函数_哔哩哔哩_bilibili 作品介绍&#xff1a; 做一个联动性非常强的Excel周报&#xff0c;如图所示&#xff0c;每个数据之间都有关联&#xff0c;改动起来非常方便&#xff0c;对基本函数也有了很深入的认…

QTableWidget 如何设置自动列宽?

在 Qt 的 QTableWidget 中&#xff0c;设置自动列宽通常意味着让列宽根据列内容自动调整&#xff0c;以确保内容不会被截断且表格看起来更加整洁。Qt 提供了几种方式来实现这一点&#xff0c;但需要注意的是&#xff0c;QTableWidget 本身并没有直接提供一个“一键设置所有列自…

C语言学习——函数

目录 八、函数 8.1概述 8.2函数定义的一般形式 无参函数 有参函数 空函数 8.3函数参数和函数的值 形式参数和实际参数 函数的返回值 8.4函数的调用 函数调用的一般形式 函数调用的方式 1.函数语句 2.函数表达式 3.函数参数 对被调用函数的声明和函数原型 8.5函…

记录一次.gitignore 失效问题

前言 今天使用git同步同事的代码时&#xff0c;出现一个问题&#xff0c;.gitignore限制失效&#xff0c;导致我本地生成的临时缓存文件被跟踪到了commit中&#xff0c;执行 git rm --cache .后再add commit也不行&#xff0c;很奇怪就研究了一下&#xff0c;下面将我的解决方…

基于Spring Boot的社区团购系统

目录 前言 功能设计 系统实现 获取源码 博主主页&#xff1a;百成Java 往期系列&#xff1a;Spring Boot、SSM、JavaWeb、python、小程序 前言 随着社会进步和科技发展&#xff0c;信息化时代为各行各业带来了巨大的变革。计算机技术的先进性和普及性使得信息系统的开发变…

前端(HTML + CSS)小兔鲜儿项目(仿)

前言 这是一个简单的商城网站&#xff0c;代码部分为HTML CSS 和少量JS代码 项目总览 一、头部区域 头部的 购物车 和 手机 用的是 文字图标&#xff0c;所以效果可以和文字一样 购物车右上角用的是绝对定位 logo用的是 h1 标签&#xff0c;用来提高网站搜索排名 二、banne…