页面内Tab切换-工程问题

组件之间的引用

导入组件

java 复制代码
import voiceComponent from '@/views/voice/voice/index.vue'

在 Vue 3 中也推荐使用 defineComponent 来明确声明一个组件。

java 复制代码
import {defineComponent} from "vue";
java 复制代码
defineComponent(() => {
  components:{
    voiceComponent
  }
})

工程需求

解决方案

```plain

<el-tabs> 是 Element Plus 提供的标签页容器组件,用于在同一个区域内切换显示不同的内容面板。

@tab-click="handleTableClick"

  • 作用:监听标签页点击事件,当用户点击标签页时触发指定的方法。
  • 解释handleTableClick 是在组件方法中定义的函数,用于处理标签页点击后的逻辑。

<el-tab-pane><el-tabs> 的子组件,用于定义每个标签页的内容 。

  • label="总的声纹样本库"
  • 作用:定义标签页的标题,会显示在标签栏上。
  • 解释label 可以是字符串或插槽内容,用于设置标签页的显示名称。
  • name="1"
  • 作用 :为每个标签页指定一个唯一标识符,用于 v-model 绑定和事件处理。
  • 解释name 必须唯一,用于控制哪个标签页被激活。

每个 <el-tab-pane> 中可以包含任意内容,包括其他组件、HTML 元素等。在你的代码中:

在这个里面导入其他的组件,这样简化了一个vue文件里面的代码,较为方便。

plain 复制代码
const handleTableClick = (tab) => {
  console.log(tab.props.name)  //对应上面的name的值
  showIndex.value = tab.props.name;
}

但是存在了一个问题,每一个页面都是很复杂的,页面无法加载,这边就进行异步加载。

使用defineAsyncComponent

plain 复制代码
import {defineAsyncComponent} from "vue";

const voiceComponent = defineAsyncComponent(() => import('@/views/voice/template/voice_raw_template.vue'));

通过v-if 来控制组件的生成,v-if为true来去生成。

plain 复制代码
<el-tab-pane label="历史生成的声纹样本" name="2">
  <div v-if="isVoiceComponentLoaded">
    <voice-component></voice-component>
  </div>
</el-tab-pane>
plain 复制代码
const isVoiceComponentLoaded = ref(false);

const handleTableClick = (tab) => {
  console.log(tab.props.name)
  showIndex.value = tab.props.name;
  if (tab.props.name == "2") {
    isVoiceComponentLoaded.value = true;
  }
}
相关推荐
教练、我想打篮球7 小时前
122 Hession,FastJson,ObjectInputStream的序列化反序列化相同引用的处理
java·config·utils
酷柚易汛7 小时前
酷柚易汛ERP 2025-12-26系统升级日志
java·前端·数据库·php
侠客行03178 小时前
Mybatis入门到精通 一
java·mybatis·源码阅读
消失的旧时光-19438 小时前
微服务的本质,其实是操作系统设计思想
java·大数据·微服务
Coder_Boy_8 小时前
基于SpringAI的智能平台基座开发-(四)
java·人工智能·spring boot·langchain·springai
码界奇点8 小时前
基于Spring Boot的内容管理系统框架设计与实现
java·spring boot·后端·车载系统·毕业设计·源代码管理
墨雪不会编程9 小时前
C++【string篇1遍历方式】:从零开始到熟悉使用string类
java·开发语言·c++
蒂法就是我9 小时前
有一张表,只有一个字段没有插入主建,能插入成功吗? 隐藏的 rowid除了在这里用到还在哪里用到了?
java
a努力。9 小时前
字节Java面试被问:系统限流的实现方式
java·开发语言·后端·面试·职场和发展·golang
独自破碎E9 小时前
Java中的Exception和Error有什么区别?
java·开发语言