vue+elementUI实现tab路由切换
这个tab其实实现很久了,已经在我好几个项目中使用了,很早之前就想记录下来的,一直拖拖拖到现在emmmm…
最开始写这个tab的时候去看了很多篇实现tab的文章,先后也试了很多他们写的,因为项目框架的不同,总是有大大小小的问题,推翻重做了多次,依旧没能实现。最后还是自己一点一点理解后堆出来了。(原本觉得很难,理解后发现并没有那么难,所以不管做什么,理解真的很重要!!!)
实现效果:
直接上代码!
1.实现tab组件
TabComponent.vue
<template>
<div class="app-wrap">
<!-- 此处放置el-tabs代码 -->
<div class="template-tabs">
<el-tabs
v-model="editableTabsValue"
type="card"
closable
@tab-click="tabClick"
@tab-remove="removeTab">
<el-tab-pane
v-for="(item, index) in editableTabs"
:key="item.name"
:label="item.title"
:name="item.name"
>
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
export default {
name: "TabComponent",
data(){
return{
}
},
methods: {
//点击切换tab
tabClick(tab){
let path = tab.name;
this.$store.commit('setTabName', path);
this.$router.push({
path: path});
},
//点击移除tab
removeTab(targetName){
if(targetName === "/home"){
return;
}
let tabs;
tabs = typeof this.editableTabs ==='string'? JSON.parse(this.editableTabs):this.editableTabs;
let activeName = this.editableTabsValue;