Skip to content

标签栏 Tabbar

标签栏组件。

兼容性

  • 兼容:✅
  • 不兼容:❌
  • 未知:❔
H5安卓苹果微信支付宝百度抖音QQ快手飞书京东
小红书鸿蒙360华为快应用快应用联盟

插件市场地址

DCloud 插件市场地址

基础使用

  • 包含两个组件:
    • pure-tabbr: 包裹组件。
    • pure-tabbar-item: 标签项组件。
  • 通过给包裹组件的 avtiveValue 属性设置激活项的值。
  • 通过给包裹组件的 valueKey 属性设置激活项的值字段名称,默认 name
  • 通过给标签项组件属性 item 设置标签项数据。
vue
<template>
    <pure-tabbar :activeValue="activeValue">
        <pure-tabbar-item v-for="item in tabbar" :key="item.name" :item="item"></pure-tabbar-item>
    </pure-tabbar>
</template>

<script setup>
    import { ref } from "vue";

    // 标签栏
    const tabbar = ref([
        { name: "首页", icon: "__dianpu_2", activeIcon: "__dianpu_2", path: "/pages/home/index" },
        { name: "分类", icon: "__fenlei_6", activeIcon: "__fenlei_6", path: "/pages/category/index" },
        { name: "聊天", icon: "__pinglun_3", activeIcon: "__pinglun_3", path: "/pages/chat/index" },
        { name: "购物车", icon: "__gouwu", activeIcon: "__gouwu", path: "/pages/car/index" },
        { name: "我的", icon: "__wode", activeIcon: "__wode", path: "/pages/mine/index" },
    ]);

    // 选中项
    const activeValue = ref("首页");
</script>

标签项数据

属性名说明类型默认值可选值版本
name标签名称、文本String--+1.0.0
icon未激活时的图标,同图标组件(Icon)的 name 属性,参考String--+1.0.0
activeIcon激活时的图标,同图标组件(Icon)的 name 属性,参考String--+1.0.0
path跳转页面路径String--+1.0.0

自定义颜色

  • 通过包裹组件的 color 属性设置未激活时的颜色。
  • 通过包裹组件的 activeColor 属性设置激活时的颜色。
vue
<template>
    <pure-tabbar :activeValue="activeValue" color="#666666" activeColor="#ff0000">
        <pure-tabbar-item v-for="item in tabbar" :key="item.name" :item="item"></pure-tabbar-item>
    </pure-tabbar>
</template>

自定义大小

  • 通过包裹组件的 iconSize 属性设置图标的大小。
  • 通过包裹组件的 textSize 属性设置文本的大小。
vue
<template>
    <pure-tabbar :activeValue="activeValue" iconSize="18px" textSize="10px">
        <pure-tabbar-item v-for="item in tabbar" :key="item.name" :item="item"></pure-tabbar-item>
    </pure-tabbar>
</template>

切换拦截

  • 通过包裹组件的 beforeChange 事件拦截切换,返回 truePromise.then 表示允许切换,返回 falsePromise.catch 表示不允许切换。
vue
<template>
    <pure-tabbar :activeValue="activeValue" :beforeChange="handleBeforeChange">
        <pure-tabbar-item v-for="item in tabbar" :key="item.name" :item="item"></pure-tabbar-item>
    </pure-tabbar>
</template>

<script setup>
    import { ref } from "vue";

    // 切换前的拦截函数
    function handleBeforeChange(tab) {
        uni.showLoading({
            title: `切换到'${tab.name}'标签页`,
        });

        return new Promise((resolve) => {
            setTimeout(() => {
                activeValue.value = tab.name;
                uni.hideLoading();
                resolve(true);
            }, 2500);
        });
    }
</script>

禁用

  • 通过标签项组件的 disabled 属性设置禁用状态。
vue
<template>
    <pure-tabbar :activeValue="activeValue">
        <pure-tabbar-item v-for="item in tabbar" :key="item.name" :item="item" :disabled="item.disabled"></pure-tabbar-item>
    </pure-tabbar>
</template>

结合徽标组件适用

  • 通过默认的 slot 插槽设置徽标组件或其他元素。
vue
<template>
    <pure-tabbar :activeValue="activeValue">
        <pure-tabbar-item v-for="item in tabbar" :key="item.name" :item="item">
            <pure-badge mode="dot" class="pure-badge-danger"></pure-badge>
        </pure-tabbar-item>
    </pure-tabbar>
</template>

Props

pure-tabbar

属性名说明类型默认值可选值版本
hoverClass全局设置标签项的 hover-classviewhover-classString"pure-hover"-+1.0.0
iconMode图片图标的裁剪模式,同图标组件(Icon)的 mode 属性,参考StringheightFix-+1.0.0
safeBottom是否开启底部安全区域Booleantrue-+1.0.0
color默认颜色Stringvar(--pure-theme-info)-+1.0.0
activeColor激活项颜色Stringvar(--pure-theme-primary)-+1.0.0
activeValue当前激活项的值[String, Number]undefined-+1.0.0
valueKey激活项的值对应 item 的属性 keyStringname-+1.0.0
async是否开启异步切换,开启后通过 @asyncChange 事件手动控制激活项Booleanfalsetrue+1.0.0
pathKey表示跳转页面路径的属性 keyStringpath-+1.0.0
beforeChange切换前的拦截函数,返回 truePromise.then 表示允许切换,返回 falsePromise.catch 表示不允许切换Function() => true-+1.0.0
iconSize图标大小String--+1.0.0
textSize蚊子大小String--+1.0.0
borderColor边框(上边框)颜色String--+1.0.0

pure-tabbar-item

属性名说明类型默认值可选值版本
hoverClass单独设置标签项的 hover-classviewhover-classString--+1.0.0
item标签数据Objectnull-+1.0.0
active激活状态,可以单独设置,也可以在包裹组件上通过 activeValue 设置Booleanfalsetrue+1.0.0
disabled是否禁用Booleanfalsetrue+1.0.0
disabledClass禁用时的 classStringpure-disabled-+1.0.0

Event

事件名说明回调参数版本
change切换事件tab: 标签数据+1.0.0
asyncChange异步切换事件tab: 标签数据+1.0.0

Slots

名称说明参数版本
default默认,可以放置徽标组件等内容-+1.0.0
contentitem 内容,可以自定义 item 样式-+1.0.0

基于 MIT 许可发布