You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue封装v-tabs可复用组件异常:v-tab-item内容无法渲染求助

故障原因

1. 核心问题:插槽名称不匹配

你封装的Tabs组件内<v-tabs-items>区域定义的插槽名为tab-content,但使用组件时声明的插槽名是#tabs-content,多了一个s字符,导致标签内容没有被正确插入到对应位置,因此仅展示标签栏没有内容。

2. 次要问题:初始赋值逻辑缺陷

原代码中if (this.tabNumber)的判断会把合法的激活序号0判定为假值,导致传入序号为0时初始赋值不生效。


修复方案

修正后组件逻辑(Tabs.vue)

@WithRender
@Component
export class Tabs extends Vue {

  @Prop({default: 0})
  tabNumber!: number;

  tab: number = 0;

  mounted(): void {
    // 移除假值判断,所有合法输入都生效
    this.tab = parseInt(String(this.tabNumber), 10);
    this.$watch('tabNumber', this.changeTab);
  }

  changeTab(): void {
    this.tab = parseInt(String(this.tabNumber), 10);
  }
}

修正后组件使用代码

<tabs :tabNumber="tabNumber">
    <template #tab-names>
        <v-tab value="0"> Component1 </v-tab>
        <v-tab value="1"> Component2 </v-tab>
    </template>
    <!-- 修正插槽名和组件定义保持一致 -->
    <template #tab-content>
        <v-tab-item value="0">
            <some-component-1/>
        </v-tab-item>
        <v-tab-item value="1">
            <some-component-2/>
        </v-tab-item>
    </template>
</tabs>

可选优化:给每个v-tab和对应的v-tab-item绑定相同的value值,可以避免动态生成标签时索引错位的问题

内容的提问来源于stack exchange,提问作者pio2478foo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:36:03