首页 > 其他分享 >vue3项目中 路由elementPlus当中的标签页结合封装

vue3项目中 路由elementPlus当中的标签页结合封装

时间:2024-05-29 10:03:05浏览次数:27  
标签:elementPlus name 标签 routerMenu value newVal vue3 路由

在项目当中大家应该都有看到过,像标签页一样的面包屑吧,接下来我为大家介绍一下,主要组成部分:路由+组件库的标签页。ok就这么easy!!!它实现的方法也不难哦

请看效果图

ok,在中间实现思路与大家分享一下:主要是使用watch监听我们的route路由的变化,然后根据传递过来的路由信息,进行标签页的添加与切换,添加删除,都是标签页自带的,下面是代码有详细的介绍:

//这里我是封装的一个组件哦,在主页面记得引入一下
//标签页替代面包屑
<template>
  <el-tabs
    v-model="editableTabsValue"
    type="card"
    editable
    class="demo-tabs"
    @tab-remove="delTag"
    @tab-change="goNext"
  >
    <el-tab-pane
      v-for="item in routerMenu"
      :key="item.name"
      :label="item.title"
      :name="item.name"
    >
    </el-tab-pane>
  </el-tabs>
</template>

<script setup lang="ts">
import {
  ref,
  watch,
} from "vue";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
let route = useRoute();
let router = useRouter();
//当选中那个标签时,获取焦点,通过name
const editableTabsValue = ref("");
//标签的列表
const routerMenu = ref([]);
//通过监听路由route,来实现标签页的添加,以及获取焦点
watch(route, (newVal, oldVal) => {
  //获取当前的 路由信息
  console.log(newVal.matched[0].meta.title);
  //定义一个flag 来判断是否需要添加标签
  let flag = routerMenu.value.every((e) => {
    return e.name != newVal.matched[0].path;
  });
  //根据当前路由的path与标签页的name进行比较,如果相同,则获取焦点
  editableTabsValue.value = newVal.matched[0].path;
  //,如果此时路由表中没有这个标签,则添加
  if (flag) {
    routerMenu.value.push({
      title: newVal.matched[0].meta.title,
      name: newVal.matched[0].path,
    });
  }
});
//这里当点击标签页的删除时触发。
let delTag = (name) => {
  //如果还剩下最后一个则不可以删除,导入elementui的提示框
  if (routerMenu.value.length == 1) {
    ElMessage({
      message: "最后一个不可以删除哦!!!",
      type: "success",
    });
    return;
  }
  // console.log(name);
  //根据splice删除 ,下标需要通过传递过来的name与标签页列表的name进行比较,获取删除的下标
  routerMenu.value.splice(
    routerMenu.value.findIndex((e) => e.name == name),
    1
  );
  //删除之后,路由跳转到标签页列表的后面的路由页面
  router.push(routerMenu.value[routerMenu.value.length - 1].name);
};
//点击标签页时,切换路由
let goNext = (name) => {
  router.push(name);
};
</script>

<style lang="scss" scoped>
</style>

ok啦,今天就分享到这里吧,加油!!!祝大家生活愉快

标签:elementPlus,name,标签,routerMenu,value,newVal,vue3,路由
From: https://blog.csdn.net/lzz20010903/article/details/139286633

相关文章

  • Vue从入门到实战Day12~14 - Vue3大事件管理系统
    一、用到的知识Vue3compositionAPIPinia/Pinia持久化处理ElementPlus(表单校验,表格处理,组件封装)pnpm包管理升级Eslint+prettier更规范的配置husky(Githooks工具):代码提交之前,进行校验请求模块设计VueRouter4路由设计AI大模型开发一整个项目模块(掌握最新的开发方式)·......
  • Vue3 实现登录跳转页面
    点击登录按钮即跳转到新页面,而不是在当前页面加载组件App.Vue:<script>exportdefault{data(){return{}}}</script><template>//必须加上router-view,否则会显示空白页面<router-view></router-view></template><style></style>main......
  • Vue2和Vue3获取组件名称
    Vue获取组件名称Vue2获取组件名称获取方式:this.$options.name解读:通过Vue2的this关键字,可以很容易地访问Vue组件实例对象身上的$options的name属性来获取组件名称。<script>exportdefault{name:"Brand",mounted(){//Brandconsole.log(this.......
  • VUE3操作系统之【文件管理】
    回顾VUE3开发操作系统日志【窗口拖拽,碰撞检测,附带代码】-CSDN博客概要作为一个操作系统,文件管理当然是必不可少的存在这可不是静态作秀的页面,是真实的文件增删改查本期会分享一些上传的技术细节在线预览:AX先看长啥样技术选型前端:Vue3+Antui+Splitpanes后端:JavaJ......
  • 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框
    升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0uniapp、vue、android、web框架:Vue3+SpringBoot3),界面功能(二)    客户订货---订货模板      客户订货模板      ......
  • vue3 动态组件
    <template><divclass="max_box"><a-tabsv-model:activeKey="activeKey"@change="callback"><a-tab-pane:tab="item.tab"v-for="iteminstate.list":key="i......
  • 小米万兆路由器(AX10000)SimpleDocker部署alist+aria2,实现离线下载
     从镜像管理中拉取p3terx/aria2-pro和xhofe/alist: 输入镜像名称后点击OK,出现成功提示后关闭拉取窗口: 等镜像拉取完毕后,创建alist容器: 选择简单模式:alist容器参数:端口映射:5244:5244环境变量:PUID=0;PGID=0;UMASK_SET=022; 复制alist的宿主目录: 创建aria......
  • 网关路由快速入门
    在SpringBoot中整合SpringCloudGateway是一个常见的需求,尤其是当需要构建一个微服务架构的应用程序时。SpringCloudGateway是SpringCloud生态系统中的一个项目,它提供了一个API网关,用于处理服务之间的请求路由、安全、监控和限流等功能。使用引入依赖<dependency>......
  • 彻底搞清楚vue3的defineExpose宏函数是如何暴露方法给父组件使用
    前言众所周知,当子组件使用setup后,父组件就不能像vue2那样直接就可以访问子组件内的属性和方法。这个时候就需要在子组件内使用defineExpose宏函数来指定想要暴露出去的属性和方法。这篇文章来讲讲defineExpose宏函数是如何暴露出去这些属性和方法给父组件使用。注:本文中使用的vue......
  • 《计算机网络微课堂》4-5 静态路由配置及其可能产生的路由环路问题
    ‍本节课我们介绍静态路由配置及其可能产生的路由环路问题,静态路由配置是指用户或网络管理员使用路由器的相关命令,给路由器人工配置路由表,这种人工配置方式简单,开销小,但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中。采用使用静态路由配置,可能出现以下导致产生......