vue3封装swicthtab组件 js&&ts可用

在Vue 3中,你可以创建一个可重复使用的SwitchTab组件,该组件可以接收不同的参数来显示不同的标签内容。以下是一个简单的SwitchTab组件的示例代码,它可以在JavaScript和TypeScript中使用。




<template>
  <div class="switch-tab">
    <div
      v-for="(tab, index) in tabs"
      :key="index"
      :class="{'active': activeIndex === index}"
      @click="selectTab(index)"
    >
      {{ tab.title }}
    </div>
  </div>
  <div>
    <slot :name="activeIndex"></slot>
  </div>
</template>
 
<script>
export default {
  props: {
    tabs: {
      type: Array,
      required: true
    },
    initialIndex: {
      type: Number,
      default: 0
    }
  },
  data() {
    return {
      activeIndex: this.initialIndex
    };
  },
  methods: {
    selectTab(index) {
      this.activeIndex = index;
      this.$emit('update:modelValue', index);
    }
  }
};
</script>
 
<style scoped>
.switch-tab div {
  cursor: pointer;
}
.switch-tab div.active {
  font-weight: bold; /* Or any other style to indicate active tab */
}
</style>

使用该组件时,你需要传递一个tabs数组,它包含每个标签的信息,以及一个初始索引(可选)。该组件还提供了一个插槽,用于显示对应标签的内容。

在父组件中使用该组件:




<template>
  <SwitchTab :tabs="tabs" v-model="activeTabIndex">
    <template v-slot:0>
      Content for tab 1
    </template>
    <template v-slot:1>
      Content for tab 2
    </template>
    <template v-slot:2>
      Content for tab 3
    </template>
  </SwitchTab>
</template>
 
<script>
import SwitchTab from './SwitchTab.vue';
 
export default {
  components: {
    SwitchTab
  },
  data() {
    return {
      tabs: [
        { title: 'Tab 1' },
        { title: 'Tab 2' },
        { title: 'Tab 3' }
      ],
      activeTabIndex: 0
    };
  }
};
</script>

在这个例子中,SwitchTab组件接收一个tabs数组,并通过v-model进行数据双向绑定,从而允许父组件控制当前激活的标签。每个<template>标签对应一个标签的内容,通过v-slot传递对应的索引来确定内容的显示。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日