<script setup lang="ts">
import { ref } from 'vue'
const activeIndex = ref(0)
</script>
<template>
<SkTabs v-model="activeIndex">
<SkTab label="标签一">
<view class="p-4">内容一</view>
</SkTab>
<SkTab label="标签二">
<view class="p-4">内容二</view>
</SkTab>
<SkTab label="标签三">
<view class="p-4">内容三</view>
</SkTab>
</SkTabs>
</template>
| Prop | 类型 | 默认值 | 描述 |
|---|
defaultValue | number | 0 | 默认激活的标签索引(非受控模式) |
<template>
<SkTabs :default-value="1">
<SkTab label="标签一">
<view class="p-4">内容一</view>
</SkTab>
<SkTab label="标签二">
<view class="p-4">内容二(默认激活)</view>
</SkTab>
<SkTab label="标签三">
<view class="p-4">内容三</view>
</SkTab>
</SkTabs>
</template>
| Prop | 类型 | 默认值 | 描述 |
|---|
v-model | number | - | 当前激活的标签索引,支持 v-model 双向绑定 |
<script setup lang="ts">
import { ref } from 'vue'
const activeIndex = ref(0)
function switchToSecondTab() {
activeIndex.value = 1
}
</script>
<template>
<view class="flex flex-col gap-3 p-4">
<SkButton label="切换到第二个标签" @click="switchToSecondTab" />
<SkTabs v-model="activeIndex">
<SkTab label="标签一">
<view class="p-4">内容一</view>
</SkTab>
<SkTab label="标签二">
<view class="p-4">内容二</view>
</SkTab>
<SkTab label="标签三">
<view class="p-4">内容三</view>
</SkTab>
</SkTabs>
</view>
</template>
| Prop | 类型 | 默认值 | 描述 |
|---|
scrollable | boolean | false | 是否可横向滚动 |
<script setup lang="ts">
import { ref } from 'vue'
const activeIndex = ref(0)
</script>
<template>
<SkTabs v-model="activeIndex" scrollable>
<SkTab
v-for="i in 10"
:key="i"
:label="`标签${i}`"
>
<view class="p-4">内容 {{ i }}</view>
</SkTab>
</SkTabs>
</template>
| Prop | 类型 | 默认值 | 描述 |
|---|
lineWidth | number | 'auto' | 'auto' | 指示器宽度(px) |
<script setup lang="ts">
import { ref } from 'vue'
const activeIndex = ref(0)
</script>
<template>
<view class="flex flex-col gap-4 p-4">
<view>
<text class="text-sm text-label mb-2">自动宽度(默认)</text>
<SkTabs v-model="activeIndex" line-width="auto">
<SkTab label="标签一">内容一</SkTab>
<SkTab label="标签二">内容二</SkTab>
</SkTabs>
</view>
<view>
<text class="text-sm text-label mb-2">固定宽度</text>
<SkTabs v-model="activeIndex" :line-width="60">
<SkTab label="标签一">内容一</SkTab>
<SkTab label="标签二">内容二</SkTab>
</SkTabs>
</view>
</view>
</template>
| Prop | 类型 | 默认值 | 描述 |
|---|
animated | boolean | true | 是否启用切换动画 |
<script setup lang="ts">
import { ref } from 'vue'
const activeIndex = ref(0)
</script>
<template>
<view class="flex flex-col gap-4 p-4">
<view>
<text class="text-sm text-label mb-2">启用动画(默认)</text>
<SkTabs v-model="activeIndex" :animated="true">
<SkTab label="标签一">内容一</SkTab>
<SkTab label="标签二">内容二</SkTab>
</SkTabs>
</view>
<view>
<text class="text-sm text-label mb-2">禁用动画</text>
<SkTabs v-model="activeIndex" :animated="false">
<SkTab label="标签一">内容一</SkTab>
<SkTab label="标签二">内容二</SkTab>
</SkTabs>
</view>
</view>
</template>
| Prop | 类型 | 默认值 | 描述 |
|---|
disabled | boolean | false | 是否禁用整个标签页 |
<script setup lang="ts">
import { ref } from 'vue'
const activeIndex = ref(0)
</script>
<template>
<view class="flex flex-col gap-4 p-4">
<view>
<text class="text-sm text-label mb-2">禁用整个标签页</text>
<SkTabs v-model="activeIndex" disabled>
<SkTab label="标签一">内容一</SkTab>
<SkTab label="标签二">内容二</SkTab>
</SkTabs>
</view>
<view>
<text class="text-sm text-label mb-2">禁用单个标签</text>
<SkTabs v-model="activeIndex">
<SkTab label="正常标签">内容一</SkTab>
<SkTab label="禁用标签" disabled>内容二</SkTab>
<SkTab label="正常标签">内容三</SkTab>
</SkTabs>
</view>
</view>
</template>
| Prop | 类型 | 默认值 | 描述 |
|---|
label | string | - | 标签文本 |
通过监听 change 和 click 事件可以在标签切换时执行自定义逻辑。
<script setup lang="ts">
import { ref } from 'vue'
const activeIndex = ref(0)
function handleChange(index: number) {
console.log('切换到标签:', index)
uni.showToast({
title: `切换到标签 ${index + 1}`,
icon: 'none'
})
}
function handleClick(index: number) {
console.log('点击了标签:', index)
}
</script>
<template>
<SkTabs
v-model="activeIndex"
@change="handleChange"
@click="handleClick"
>
<SkTab label="标签一">
<view class="p-4">内容一</view>
</SkTab>
<SkTab label="标签二">
<view class="p-4">内容二</view>
</SkTab>
<SkTab label="标签三">
<view class="p-4">内容三</view>
</SkTab>
</SkTabs>
</template>
| 事件名 | 参数 | 描述 |
|---|
change | (index: number) | 切换标签时触发 |
click | (index: number) | 点击标签时触发 |
| 插槽名 | 说明 |
|---|
default | 标签内容,放置 SkTab 组件 |
| 属性名 | 类型 | 默认值 | 描述 |
|---|
label | string | - | 详见 Label 标签文本 |
disabled | boolean | false | 是否禁用该标签 |
正在完善中,敬请期待!😊