Vue3 + Element Plus 实现动态标签页及右键菜单
    		       		warning:
    		            这篇文章距离上次修改已过433天,其中的内容可能已经有所变动。
    		        
        		                
                
<template>
  <el-tabs v-model="activeName" @tab-click="handleClick">
    <el-tab-pane
      v-for="item in editableTabs"
      :key="item.name"
      :label="item.title"
      :name="item.name"
      :closable="item.name !== '1'"
    >
    </el-tab-pane>
    <template #tab-bar>
      <tab-bar @add="addTab"></tab-bar>
    </template>
  </el-tabs>
</template>
 
<script setup>
import { ref } from 'vue';
import TabBar from './TabBar.vue';
 
const activeName = ref('1');
const editableTabs = ref([{ title: 'Tab 1', name: '1' }]);
 
const handleClick = (tab, event) => {
  console.log(tab, event);
};
 
const addTab = (target) => {
  let newTabName = (editableTabs.value.length + 1).toString();
  let newTab = {
    title: 'Tab ' + newTabName,
    name: newTabName,
  };
  if (target) {
    editableTabs.value.splice(target + 1, 0, newTab);
  } else {
    editableTabs.value.push(newTab);
  }
  activeName.value = newTabName;
};
</script>在这个代码实例中,我们使用了Vue 3的 <script setup> 语法糖来简化组件的编写。我们定义了一个响应式的 editableTabs 数组来存储标签页的信息,并通过循环生成 el-tab-pane 组件。每个标签页都是可关闭的,但第一个标签页不可关闭。我们还实现了一个自定义的 TabBar 组件,通过插槽的方式添加到 el-tabs 的底部,用于添加新的标签页。每当添加新标签页时,我们更新 activeName 来确保新标签页被激活。这个例子展示了如何使用Element Plus组件库和Vue 3的Composition API来创建一个具有动态标签页和自定义右键菜单功能的用户界面。
评论已关闭