Vue中使用vuex实现el-tab的路由跳转以及样式回显

(3)vue基于el-tabs实现路由选项卡组件封装 记录历史页面的路由选项卡组件完成效果创建tabs组件根据路由数据渲染标签组件内通过vuex内的数据渲染标签 完成效果 创建tabs组件 新建Tabs.vue // Tabs.vue <script> export default { name: 'Tabs', render() { return ( <div class="l_Tabs_wrap"> <el-tabs type="card" > <e 阅读详情

一、给vue中引入vuex

npm install vuex --save

二、使用vuex中store

1.引入vuex以及store

找到vue项目中的main.js文件引入store

// 引入vuex
import Vuex from 'vuex'
// 引入store (后面我们需要自建这个文件)
import store from './store'
// 使用vuex
Vue.use(Vuex)

new Vue({
  router,
  // 加入store
  store,
  render: h => h(App)
}).$mount('#app')

2.创建store文件夹

在项目的src下创建store文件夹

在这里插入图片描述

创建index.js 与 tab.js文件
在这里插入图片描述

3. 书写index.js

import Vue from 'vue'
import Vuex from 'vuex'
import tab from '../store/tab'

Vue.use(Vuex)

export default new Vuex.Store({
  modules: {
    tabs
  }
})

4.书写tab.js文件

/**
 * 数据源  相当于组件中的data
 * @type {{state: {tabList: [], currentMenu: {}, menu: []}}}
 */
const state = {
  tabList: []
}

/**
 * 组件中的方法 methods
 * @type {{selectMenu(*, *=): void, closeTab(*, *): void}}
 */
const mutations = {
  selectMenu (state, val) {
    state.currentMenu = val
    const result = state.tabList.findIndex(item => item.path === val.path)
    result === -1 ? state.tabList.push(val) : ''
  },
  closeTab (state, val) {
    const result = state.tabList.findIndex(item => item.path === val.path)
    state.tabList.splice(result, 1)
  }
}

export default {
  state,
  mutations
}

三、页面使用

1.如何做到样式回显

首先了解el-menu标签回显选中样式控制的属性

default-active // default-active属性的值与导航中el-menu-item中的菜单选中index属性赋值的路径相同即可做的样式选中回显

在了解一下el-tab标签回显选中样式控制的属性

v-model //v-model属性的值与el-tab-pane中的name属性相同即可做的样式选中回显

这样我们知道当我们点击导航栏时,我们至少需要获取到的数据

{
  message: '导航名称',
  path: '导航路径',
  name: 'name标识'
}

2.el-menu传值

我们需要给导航栏一个单击事件 触发事件时将值传递给我们tab中的state中的tabList集合添加值

// 这里的menuList就是根据上个步骤中做的假数据进行循环赋值
<el-menu
  :default-active="defaultActiveValue"
  background-color="#545c64"
  text-color="#fff"
  router
  active-text-color="#ffd04b">
  <el-submenu :index="item.path" v-for="item in menuList" :key="item.message">
    <template slot="title">
      <i :class="item.icon"></i>
      <span>{{ item.message }}</span>
    </template>
    <!-- menuClick()单击事件拿到我们需要的值 -->
    <el-menu-item :index="child.path" v-for="child in item.children" :key="child.path" @click="menuClick(child)">
      <i :class="child.icon"></i>
      {{ child.message }}
    </el-menu-item>
  </el-submenu>
</el-menu>
<script>
export default {
  data() {
    return {
      menuList: [{假数据},{假数据}]
    }
  },
  methods: {
    // 导航栏单机事件
    menuClick (child) {
      // selectMenu使我们在tab.js中定义的方法 用于添加进tab中tabList集合方法
      this.$store.commit('selectMenu', child)
    }
  }
}
</script>

3.el-tabs的传值与回调

<el-main>
  <el-tabs v-model="editableTabsValue" type="card">
  <!-- tabs是我们从tab.js中拿到的tabsList -->
    <el-tab-pane
      v-for="item in tabs"
      :name="item.name"
      :key="item.path"
      :label="item.message">
    </el-tab-pane>
  </el-tabs>
  <!-- 路由跳转页签 -->
  <router-view></router-view>
</el-main>

export default {
// 引入vuex中的mapSta
 import { mapState } from 'vuex'
 // 使用computed监听
  computed: {
  // 用ES6的对象扩展符合并computed 拿到tabList
    ...mapState({
      tabs: state => state.tabs.tabList
    })
  }
}
<el-main>
<!-- remove关闭方法 changTab选中tab页签事件  -->
  <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab" @tab-click="changTab">
  <!-- tabs是我们从tab.js中拿到的tabsList -->
    <el-tab-pane
      v-for="item in tabs"
      :name="item.name"
      :key="item.path"
      :label="item.message">
    </el-tab-pane>
  </el-tabs>
  <!-- 路由跳转页签 -->
  <router-view></router-view>
</el-main>

export default {
// 引入vuex中的mapSta
 import { mapState } from 'vuex'
 // 使用computed监听
  computed: {
  // 用ES6的对象扩展符合并computed 拿到tabList
    ...mapState({
      tabs: state => state.tabs.tabList
    })
  },
  methods: {
  // tab关闭方法
    removeTab (targetName) {
	  // 关闭事件只能拿到当前关闭tab当前的name属性
	  // 通过遍历tab拿到对应的对象
      const tab = this.tabs.find(item => item.name === targetName)
      // tab.js中的删除方法
      this.$store.commit('closeTab', tab)
    },
    // tab点击选中事件
    changTab (data) {
      // 拿到当前tab页签的数据 根据name拿到对象
      const tab = this.tabs.find(item => item.name === data.name)
      this.$router.push(tab.path)
      this.$store.commit('selectMenu', tab)
      // defaultActiveValue 与 tab.path相等 导航栏选中样式回显
      this.defaultActiveValue = tab.path
    }
  }
}

最后将我们在上面第2步中menuClick方法加入代码 让tab也拿到样式回显

this.editableTabsValue = child.name
elementPlus | el-tabs 标签管理路由页面 elementplus中el-tabs 管理路由 阅读详情

相关推荐

Wider Face+YOLOV7人脸检测

使用Wider Face数据集训练YOLOV7

chen_znn的博客 8408

vue+elementUI el-tabs标签路由切换

注意这里如果你刷新只想保留首页,那么mounted中,你只需写else中的代码。1.实现tab组件pageTab.vue,我这里是拆的组件。如果刷新想,保留首页和当前路由页,ifelse都要写()配置路由页面我这里是动态路由,所以比较简短。需要使用tab组件的地方。...

m0_57071129的博客 1万+

用Bus Hound和MIDIOX抓包分析USB MIDI数据流:从硬件接口到软件解析的完整实战

本文详细介绍了如何使用Bus Hound和MIDIOX工具抓包分析USB MIDI数据流,从硬件接口到软件解析的完整实战过程。通过解析MIDI协议、捕获Note On/Off事件、控制变更消息等实例,帮助开发者深入理解音乐数字接口的底层通信机制,并提供了常见问题的解决方案和调试技巧。

weixin_42692935的博客 406

ElementUI使用el-tabs进行路由跳转时动态修改页签的标题

使用ElementUI的el-tabs作为路由跳转页面展示时,动态修改标签页的标题

试着奔跑的菜鸟的博客 7004

用rsl_rl训练四足机器人走梅花桩:PPO算法调参实战与避坑指南

本文详细介绍了如何使用rsl_rl框架和PPO算法训练四足机器人在梅花桩上行走的实战经验。通过分析梅花桩场景的独特挑战,提供PPO算法关键参数配置策略、奖励函数设计方法以及常见问题的解决方案,帮助开发者高效实现机器人平衡控制。文章特别强调了仿真到实机的过渡技巧,最终实现98%的过桩成功率。

weixin_29103191的博客 221

【OpenClaw 实战】Ubuntu 双机 Gateway + Node 部署全流程 + 所有常见坑(2026版)

如果你只是需要浏览器自动化、截屏、简单系统查询 →Node 模式够用,别折腾 exec。如果你需要 GOLD 运行任意 shell 命令、git、npm、自定义脚本 →必须升级成 Gateway。bind lan + pairing approve + token 统一。后续想玩多 Agent 团队,优先考虑双/多 Gateway + 聊天通道互发(社区已有不少成功案例)。欢迎评论区留言你的环境和报错,一起交流!

hampeter的博客 1547

elementui 自定义增加标签页 动态绑定路由

效果如下: el-header,el-aside,el-main布局,el-main中 <el-main> <el-tabs v-model="editableTabsValue" type="card" @tab-remove="removeTab" @tab-click="tabClick"> <el-tab-pane v-for="(item, index) in editabl.

ready456789的专栏 3468

基于ESP32和OV5640的目标检测系统

本文详细介绍了基于ESP32-S3和OV5640摄像头构建目标检测系统的完整方案。系统采用YOLOv8-Nano轻量级模型,通过INT8量化实现边缘部署,在UXGA分辨率下达到25fps帧率。文章从硬件选型、图像采集优化、模型量化部署、实时推理流水线构建等维度展开,重点解决了内存管理、电源稳定性和异常处理等嵌入式系统关键问题。该方案在资源受限条件下实现了150ms以内的端到端延迟,为物联网视觉应用提供了低成本、低功耗的解决方案,适用于智能家居、工业检测等多个场景。

reset2021的博客 329

vue如何实现el-menu与el-tabs联动,通过点击el-menu导航中的选项动态添加el-tabs页面

Vue如何实现el-menu与el-tabs联动,通过点击el-menu导航中的选项动态添加tab页面 老规矩,先上效果图! 达成这个效果,首先我们先了解下原理 在el-menu中有一个属性router,开发文档中写的非常清晰,选择该属性后即开启路由跳转,即点击el-menu中的子选项后会进行页面跳转,但是你必须将需要跳转的路由地址写为跟组件的子路由地址,否则点击跳转后会直接跳向路由地址对应的页面,这样就失去了我们想要实现的效果 接下来说下el-tabs,它的构成规则大家可以去看一下饿了么ui(eleme

YodgeGGG的博客 1万+

Vue2 - 详细实现安装西瓜视频 xgplayer 插件详细配置及使用教程,利用西瓜视频播放器播放 mp4、flv、hls 格式视频文件及视频推流(直播或监控摄像头画面),支持移动端H5及PC网站!

vue2,nuxt2,西瓜视频,xgplayer,插件组件,xgplayer-hls,xgplayer-flv,xgplayer-mp4,播放视频点播和直播视频流,自定义播放器样式,截屏,监控视频,vue使用西瓜播放器播放flv、hls、mp4视频,截屏按钮,直播流,报错,黑屏,加载失败,苹果ios不兼容,重连,怎么改样式,很卡,详细教程,监控实时播放推流,倍速播放,在线flv在线推流地址,HLS播放,vue西瓜播放器,vue如何使用西瓜视频插件做直播推流回流,视频点播,flv在线视频流播放,截图功能,利用

🏆 前端领域优质创作者 1万+

2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器

12v / 24v智能模拟高侧MOSFET栅极驱动器。2ED2410-EM具有输入CPP和CPN的电压比较器。该比较器可用于基于任何模拟电压触发SAFESTATE模式,甚至是外部电压2ED2410-EM。CPP为比较器的正输入,CPN为负输入。VcPREF可以通过微控制器进行调节,也可以通过板载电源芯片(如英飞凌SBC)或简单的分压器在限制VcP(REF)内进行固定,以保持稳定性。使用此比较器允许2ED2410-EM进入SAFESTATE并独立于微控制器关闭MOSFET。

让学习成为一种习惯 2194

动态路由和tab页切换路由

动态路由和tab页切换路由 文章目录动态路由和tab页切换路由一、在当前页面监听路由的改变1、beforeRouterEnter 进入前拦截路由2、beforeRouterUpdate 路由更新时拦截3、beforeRouterLeave 离开该路由时调用二、动态路由1、在系统中填入组件信息2、在permission.js路由拦截器中处理路由3、filterAsyncRouter处理后台返回的路由数据三、tab页动态路由切换1、tab页2、准备状态管理(tabRouterPath.js)3、在Layo

qq_41552234的博客 4743

筑基篇第9节:CUDA内存管理API进阶

CUDA多维内存管理与零拷贝技术 本文介绍了CUDA中高效处理多维数据的内存管理技术。对于二维数据,使用cudaMallocPitch可确保内存对齐访问,提升75%的带宽利用率;三维数据则通过cudaMalloc3D实现切片对齐。配套的cudaMemcpy2D/3D函数能高效处理数据拷贝。此外,零拷贝内存技术允许内核直接访问主机内存,避免显存拷贝开销。这些技术对图像处理、科学计算等应用至关重要,能显著提升多维数据处理的性能。

PeterPan的博客 83

(vue.js)Vue element tab 每个tab用一个路由来管理?

(vue.js)Vue element tab 每个tab用一个路由来管理? 来源:网络整理时间:2017/5/13 0:24:01关键词: 关于网友提出的“ (vue.js)Vue element tab 每个tab用一个路由来管理?”问题疑问,本网通过在网上对“ (vue.js)Vue element tab 每个tab用一个路由来管理?”有关的相关答...

weixin_30273931的博客 907

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vue使用el-tabs实现标签页(内存+vuex)

vue使用el-tabs实现标签页(内存+vuex) 效果图: 1: 2: 3:内存中 这是一个组件,例如:pageTabs.vue(组件是可以做到独立监听路由变化的,所以不需要外部调用什么内部的方法,所以可以抽离成为一个组件),监听路由改变进行新增标签,以及el-tabs组件的切换,删除 代码: <template> <div class="page-tabs-index"> <el-tabs v-model="activeRoute" type="card

_小郑有点困了的博客 4651

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

vue+element-ui实现侧边菜单栏与标签页联动

使用vue+element-ui实现侧边栏菜单el-menu与el-tabs标签页联动效果 先看实现效果 实现思路 el-menu使用vue-router的模式,以index进行路由跳转,当前激活菜单:default-active="$route.path",这样就会默认以当前路由路径高亮菜单选项,解决刷新等情况的高亮问题,主要代码 <el-menu :default-active="$route.path" class="el-menu-vertical-demo" .

weixin_43693458的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Vue开发实例(十)Tabs标签页打开、关闭与路由之间的关系

创建页面顶部的tabs标签,梳理页面标签打开关闭与路由之间的关系

Daniel 3990

vue实现el-menu与el-tabs联动

1、如果是首页则不删除;2、如果删除的高亮激活这一项,则跳转到最后openTab数组的最后一项并高亮;3、如果删除的不是高亮激活这一项,则不跳转,高亮激活项不变。

想好了再写! 1835

Vue+Element实现tab页多页面切换

效果图GIF 使用了哪些组件 elementUI的menu菜单、tab标签 使用sessionStorage保存菜单信息(网上很多使用vuex来管理的,目前还没学过vuex,不会用,所以不想使用vuex) 思路 思路是看了这篇文章: https://www.cnblogs.com/qdhxhz/p/12590324.html 1、首页的tag一开始就会存在,而且是不能进行删除的 2、当点击左侧栏的时候,如果tag没有该菜单名称则新增, 如果已经有了那么当前tag背景为蓝色。 3、删除当前tag,如果是

一念的博客 2万+

vue+element路由标签使用tag动态显示隐藏以及跳转实现(使用vuex)

效果图: 点击tab可以跳转到导航对应页面。 代码: <store> state:{ currentMenu:null, menu:[], tabsList:[ { path:'/', name:'首页', icon:'home' } ] }, mutations:{ //选择标签 selectMenu(state,val){ if(val.path === '/'){ this.currentMenu = null; } else { s

Eleuuuuy的博客 2735

vue2+element-UI ,新增tab标签页并携带参数的问题

vue2+element-UI ,新增tab标签页并携带参数的问题

qq_57084525的博客 3601

vue之tab的变化

state.js options: [],//存放tab页的容器 activeIndex: '',////激活的tab页路由路径 showName: 'show',//tab页的标题 role: ""//用来区分是否是因为左侧菜单被点击造成的路由路径发生改变,是:pass;不是:nopass getters.js getShowName:(state) => { re...

water_java的博客 454

spa项目开发之tab页实现

实现思路及细节 1、利用前面博客所讲的Vuex的知识;定义几个变量 Options:存放tab页对象的容器(主要是路由路径以及tab页的名字) activeIndex:被激活的tab页路由路径 showName:tab页的标题 Role:用来区分是否是因为左侧菜单被点击造成的路由路径发生改变; 是:pass;不是:nopass 2、左侧导航菜单绑定点击事件 将被点击的菜单名称存放到Vuex中,供路...

weixin_45174537的博客 172

elmentUI使用tabs标签页展示动态路由

elementUI中tabs标签页中展示动态路由内容 在home界面中添加tabs标签页,导航栏点击坐标路由时,在标签页中,展示路由中的数据。实现动态的效果。 vuex中存储数据 在vue的vuex中存储,标签页路由的相关数据 store.index.js文件中: export default new Vuex.Store({ state: { openTab...

qq_42426159的博客 6594
上一篇: 使用idea拉取 gitee远程库项目(详解)
下一篇: Java中使用 jwt + 拦截器配置 超级详细教程(详细源码)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

国家级著名CV工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值