uniapp自定义tabbar及用户权限


写在前文

在开发小程序时难免会涉及到一些用户权限的区分配置,这时官方提供的默认tabbar就难以满足,所以需要我们自定义tabbar来解决。但是查看了很多资料后,感觉都很麻烦,尤其是对新手很不友好。

官方文档

官方说明

在这里插入图片描述

两步搞定

第一🙅

首先,在components文件夹下创建CustomTabbar文件夹和CustomTabbar.vue文件(这里的名字自定义即可)
在这里插入图片描述
CustomTabbar.vue文件内容如下

<template>
  <wd-tabbar v-model="tabbar" @change="handleChange" active-color="#ee0a24" inactive-color="#7d7e80">
    <wd-tabbar-item title="首页" icon="home"></wd-tabbar-item>
    <wd-tabbar-item title="分类" icon="cart"></wd-tabbar-item>
    <wd-tabbar-item title="客服" icon="chat"></wd-tabbar-item>
    <wd-tabbar-item title="我的" icon="user"></wd-tabbar-item>
    
  </wd-tabbar>
</template>

<script lang="ts" setup>
import { ref } from 'vue'

const tabbar = ref(1)

// 页面映射 这里是对应的路由
const pages: Record<string, string> = {
  '1': '/pages/home/home',
  '2': '/pages',
  '3': '/pages',
  '4': '/pages',
}

// tabbar切换
function handleChange({ value }: { value: string }) {
  const targetPage = pages[value]
  if (targetPage) {
    uni.switchTab({ url: targetPage })
  }
}
</script>

第二🙅‍

第一步完成之后,直接在对应的页面引入使用即可
在这里插入图片描述

用户权限配置

这里有列出两种写法:
第一种:直接用role进行判断即可
第二种:如果角色较多,可以封装函数进行使用
在这里插入图片描述

提示

以上自定义tabbar使用的是wot-design-uni组件库中的tabbar
如果出现闪烁或者点击两次才能跳转bug,请将tabbar初始值进行数据持久化处理

### 创建自定义底部 TabBar 为了在 UniApp 中创建自定义底部 TabBar 并实现事件拦截,可以采用如下方案: #### 使用 `uni-simple-router` 插件进行路由管理 由于小程序系列无法直接拦截原生 tabbar 及原生导航返回,因此建议使用 `uni-simple-router` 来处理页面间的跳转逻辑[^3]。 安装此插件后,在配置文件中启用全局前置守卫 beforeEach 方法,以便于每次切换页面之前执行特定操作。例如验证用户是否已登录,如果未登录则重定向至登录界面;反之,则允许正常访问目标页面。 ```javascript import Router from 'uni-simple-router' Router.beforeEach((to, from, next) => { const isLogin = uni.getStorageSync('isLogin') || false; if (['/pages/cart/index', '/pages/user/index'].includes(to.path)) { // 假设购物车和个人中心需要登录才能查看 if (!isLogin) { uni.showToast({ title: "请先登录", icon: "none" }); setTimeout(() => { next('/pages/login/index'); }, 1000); } else { next(); } } else { next(); } }); ``` #### 构建自定义 TabBar 组件 对于自定义 TabBar 的构建,推荐利用图鸟 UI 提供的相关组件完成设计工作[^2]。该库提供了丰富的样式选项以及良好的交互体验,能够满足大多数应用场景下的需求。 首先前往 UniApp 插件商店查找并集成图鸟 UI 库,之后按照官方文档说明导入所需模块即可快速搭建出自定义 TabBar 结构。 下面是一个简单的 HTML 版本范例用于展示如何组合各个部分形成完整的布局结构: ```html <template> <view class="container"> <!-- 主体内容区 --> <navigator url="/path/to/page" v-for="(item,index) in tabBarList" :key="index">{{ item.text }}</navigator> <!-- 自定义TabBar区域 --> <van-tabbar active-color="#ee0a24" inactive-color="#000" @change="onChange"> <van-tabbar-item name="home">首页</van-tabbar-item> <van-tabbar-item name="category">分类</van-tabbar-item> <van-tabbar-item name="cart">购物车</van-tabbar-item> <van-tabbar-item name="profile">个人中心</van-tabbar-item> </van-tabbar> </view> </template> <script> export default { data() { return { current: '', tabBarList:[ {"text":"首页"}, {"text":"分类"}, {"text":"购物车"}, {"text":"个人中心"} ] }; }, methods:{ onChange(event){ console.log(`当前选中的标签为 ${event.detail.name}`); switch(event.detail.name){ case 'home': this.$router.push({ path:'/pages/home/index'}); break; case 'category': this.$router.push({ path:'/pages/category/index'}); break; case 'cart': this.$router.push({ path:'/pages/cart/index'}); break; case 'profile': this.$router.push({ path:'/pages/profile/index'}); break; default: break; } } } } </script> ``` 上述代码片段展示了如何结合 `uni-simple-router` 和图鸟 UI 实现带有权限校验机制的自定义 TabBar 功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小童不学前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值