位置: IT常识 - 正文

小程序自定义tabbar导航栏、动态控制tabbar功能实现(uniapp)(小程序自定义tabbar创意动画)

编辑:rootadmin
小程序自定义tabbar导航栏、动态控制tabbar功能实现(uniapp) uniapp开发小程序,不同角色/已登录未登录,都有不一样的底部导航栏,这些情况下就需要自行定义tabbar,从而实现动态tabbar的实现。

推荐整理分享小程序自定义tabbar导航栏、动态控制tabbar功能实现(uniapp)(小程序自定义tabbar创意动画),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:小程序自定义tabbar创意动画组件,小程序自定义tabbar组件,小程序自定义tabbar创意动画组件,小程序自定义tabbar创意动画,小程序自定义tabbar组件,小程序自定义tabbar点击后凸起,小程序自定义tabbar遮挡布局,小程序自定义tabbar组件,内容如对您有帮助,希望把文章链接给更多的朋友!

1.首先我们需要在pages.json配置tabbar

我这里并没有开启custom(自定义),不开启的话,他在页面是有占位的,那就需要在页面进行隐藏,后面会讲到;这里是直接给一个路径就可以,用于后期使用uni.switchTab(OBJECT)进行跳转"tabBar": {// "custom": true,"list": [{"pagePath": "pages/home/index"},{"pagePath": "pages/personal/index"},{"pagePath": "pages/personal/notMemberIndex"}]}

2.我们需要配置tabbar列表,根据角色的不同设置不同的tabbar列表数据

我是登录的用户跟未登录的用户是不同的tabbar的一个显示;

重点: !! 这里的text,pagePath,iconPath, selectedIconPath,这四个命名必须跟pages.json里面tabBar配置的原始命名一致,否则会出问题!!

// 已登录const member = [{"text": "首页","pagePath": "/pages/home/index","iconPath": require("@/static/home.png"),"selectedIconPath": require("@/static/homeSelect.png")},{"text": "个人中心","pagePath": "/pages/personal/index","iconPath": require("@/static/personal.png"),"selectedIconPath": require("@/static/personalSelect.png")}]// 未登录const notMember = [{"text": "山姆会员商城","pagePath": "/pages/home/index","iconPath": require("@/static/home.png"),"selectedIconPath": require("@/static/homeSelect.png")},{"text": "成为会员","pagePath": "/pages/personal/notMemberIndex","iconPath": require("@/static/notMember.png"),"selectedIconPath": require("@/static/notMemberSelect.png")}]export default {member,notMember}

3.使用vuex对tabBar列表数据进行一个存储赋值

小程序自定义tabbar导航栏、动态控制tabbar功能实现(uniapp)(小程序自定义tabbar创意动画)

tabBar.js

对数据进行一个存储,赋值import tarBarUserType from '@/utils/tabBar.js';const tabBar = {state: {// 判断是否已登录(member/notMember)isMemberType: '',// tabbar列表数据tabBarList: []},mutations: {setType(state, isMemberType) {state.isMemberType = isMemberType;state.tabBarList = tarBarUserType[isMemberType];}}}export default tabBar;

getters.js

获取存储在vuex的内容const getters = {tabBarList: state => state.tabBar.tabBarList,isMemberType: state => state.tabBar.isMemberType,}export default getters

4.需要自行封装一个tabbar组件

附上我自己简单封装的一个组件<template><view class="tab-bar"><view class="content"><view class="one-tab" v-for="(item, index) in tabBarList" :key="index" @click="selectTabBar(item.pagePath)"><view><view class="tab-img"><image v-if="routePath === item.pagePath" class="img" :src="item.selectedIconPath"></image><image v-else class="img" :src="item.iconPath"></image></view></view><view class="tit">{{ item.text }}</view></view></view></view></template><script>export default {props: {// 底部导航栏数据tabBarList: {type: Array,required: true},// 当前页面路径routePath: {type: String,required: true}},data() {return {};},methods: {selectTabBar(path) {this.$emit('onTabBar', path)}}};</script><style lang="scss">.tab-bar {position: fixed;bottom: 0;left: 0;width: 100vw;padding: 20rpx;padding-bottom: calc(10rpx + constant(safe-area-inset-bottom));padding-bottom: calc(10rpx + env(safe-area-inset-bottom));background-color: #fff;.content {display: flex;.one-tab {display: flex;flex-direction: column;align-items: center;width: 50%;.tab-img {width: 50rpx;height: 50rpx;.img {width: 100%;height: 100%;}}.tit {font-size: $font-size-base;transform: scale(0.7);}}}}</style>

5.在存在tabbar的页面中都需要引入组件,并传相关数据 6.在这些页面需要用到getters.js获取拿到这些数据

在存在tabbar页面的都需要使用计算属性获取tabbar数据!!import { mapGetters } from 'vuex';computed: {// 这里的tabBarList就是数据源,直接使用传值...mapGetters(['tabBarList'])},

7.判断是否登录

我这里是有个登录页面的,在登录页面的时候进行一个分配tabbar列表配置的一个操作(具体看个人业务逻辑)// 存储用户信息setUserWxInfo(userInfo);// 调用上文vuex,member就是已登录的标识that.$store.commit('setType', 'member');

8.隐藏tabBar

上文提到我是在pages.json中配置tabBar的时候是没有开启custom自定义模式的,所以说他在页面是有占位的

在APP.vue, 以及所用到tabbar的页面,在onShow中调用 uni.hideTabBar({}); 对原始tabbar进行一个隐藏

9.在APP.vue中 对用户状态进行判断

在APP.vue中onShow里进行用户判断,如果已登录就传入member,否则传入notMemberonShow() {uni.hideTabBar({});if (getUserWxInfo('user_info')) {this.$store.commit('setType', 'member');} else {this.$store.commit('setType', 'notMember');}}完结~

大致就可以完成动态自定义tabbar这项需求了!

本文链接地址:https://www.jiuchutong.com/zhishi/290176.html 转载请保留说明!

上一篇:c++ 每日十问3-处理数据

下一篇:图森北部托托利塔山麓上空的雷暴,亚利桑那州索诺拉沙漠 (© Jack Dykinga/Minden Pictures)(图森在哪)

  • 微信强提醒怎么设置(微信强提醒怎么没有了)

    微信强提醒怎么设置(微信强提醒怎么没有了)

  • 腾讯会议录屏为什么没有声音(腾讯会议录屏为什么没有声音怎么办)

    腾讯会议录屏为什么没有声音(腾讯会议录屏为什么没有声音怎么办)

  • 苹果怎么发空白消息(苹果怎么发空白朋友圈)

    苹果怎么发空白消息(苹果怎么发空白朋友圈)

  • 计算机用来表示存储空间大小的基本单位(计算机用来表示内存储器容量的基本单位是)

    计算机用来表示存储空间大小的基本单位(计算机用来表示内存储器容量的基本单位是)

  • vivo手机内屏坏了要修多久(vivo手机内屏坏了怎么办)

    vivo手机内屏坏了要修多久(vivo手机内屏坏了怎么办)

  • 企业微信视频会议最多几个人(企业微信视频会议怎么共享屏幕)

    企业微信视频会议最多几个人(企业微信视频会议怎么共享屏幕)

  • 快手直播a类还能解封吗(快手直播c类有啥影响)

    快手直播a类还能解封吗(快手直播c类有啥影响)

  • 开发者选项能一直开吗(开发者选项能一键删除吗)

    开发者选项能一直开吗(开发者选项能一键删除吗)

  • 华为nava5i和nava5i pro的对比

    华为nava5i和nava5i pro的对比

  • k30pro屏幕尺寸(k30pro屏幕多少bit)

    k30pro屏幕尺寸(k30pro屏幕多少bit)

  • 键盘没坏ctrl失灵(键盘ctrl没反应)

    键盘没坏ctrl失灵(键盘ctrl没反应)

  • 怎样将文字方向变为竖行(如何把文字方向反过来)

    怎样将文字方向变为竖行(如何把文字方向反过来)

  • 快手显示请检查网络是否正常(快手显示请检查网络是否正常是不是过段时间就没有了)

    快手显示请检查网络是否正常(快手显示请检查网络是否正常是不是过段时间就没有了)

  • html怎么设置字体(html怎么设置字体垂直居中)

    html怎么设置字体(html怎么设置字体垂直居中)

  • 客户端是什么意思(客户端是意思)

    客户端是什么意思(客户端是意思)

  • 手机卡屏了关机都关不了怎么办(手机卡屏了关机都关不了是主板坏了吗)

    手机卡屏了关机都关不了怎么办(手机卡屏了关机都关不了是主板坏了吗)

  • 抖音私密怎么取消了(抖音怎么把私密取消)

    抖音私密怎么取消了(抖音怎么把私密取消)

  • 拼多多下单时能备注吗(拼多多下单时能开发票吗)

    拼多多下单时能备注吗(拼多多下单时能开发票吗)

  • 华为手机压缩包可以删除吗(华为手机压缩包能删除吗)

    华为手机压缩包可以删除吗(华为手机压缩包能删除吗)

  • 竞价推广怎么做(抖音竞价推广怎么做)

    竞价推广怎么做(抖音竞价推广怎么做)

  • 苹果xr呼吸灯怎么开(xr呼吸灯不亮了怎么设置)

    苹果xr呼吸灯怎么开(xr呼吸灯不亮了怎么设置)

  • armon32.exe是什么进程 armon32进程信息查询(arm on windows)

    armon32.exe是什么进程 armon32进程信息查询(arm on windows)

  • 实现 Google 第三方授权登录(谷歌第球)

    实现 Google 第三方授权登录(谷歌第球)

  • 鸿蒙系统怎么开启驾驶模式?鸿蒙系统开启驾驶模式教程(鸿蒙系统怎么开启OTG)

    鸿蒙系统怎么开启驾驶模式?鸿蒙系统开启驾驶模式教程(鸿蒙系统怎么开启OTG)

  • 城建附加的计税依据
  • 企业所得税季报资产总额怎么填
  • 平行结转分步法各步骤的费用
  • 季度费用支出怎么做
  • 去年的亏损今年第一季度可以弥补吗
  • 汽车装饰属于什么服务
  • 财务费用利息收入在贷方表示什么
  • 长期待摊费用摊销年限规定
  • 技术入股亏损如何清算
  • 装饰公司开票内容怎么填
  • 契税缴纳企业所得税吗
  • 2018年小规模优惠政策
  • 企业融资租赁设立条件
  • 费用进项税额转出怎么做账务处理分录
  • 发票销项负数的会计分录怎么做?
  • 固定资产报废需要税务备案吗
  • 土地一次开发和二次开发
  • 餐饮消费,碰到商家不愿意开发票怎么办?
  • 以前年度加计扣除的税
  • 企业之间承兑汇票贴现违法吗知乎
  • 财产清查的方法和财产清查结果的会计处理
  • 怎样升级智慧中小学版本软件
  • 股息红利需要缴纳个税吗
  • 一般纳税人出租其2016年4月30日前取得的不动产
  • microsoft word安装
  • scheduler.exe - scheduler是什么进程 有何作用
  • 印花税税收优惠政策2023
  • 网线超五类好还是六类好
  • 阿卡迪亚国家公园景点
  • 在途物资属于什么存货
  • 固定资产的预计使用寿命和净残值发生变更
  • 企业筹建期发生的费用有哪些
  • 元素垂直水平居中方式
  • vue组件封装步骤
  • node更新到最新版本
  • 润滑油一般纳税人税率是多少
  • 电子税务局里的自然人是什么意思
  • 贷款需要考虑什么
  • js reverse
  • 国地税合并后工资仍然不一致
  • 普通发票税额没有打印全可以用么
  • 预缴增值税后期如何处理
  • 小规模不开票怎么做账
  • 付款申请单如何管理
  • 募捐建议
  • 应收票据的分录怎么做
  • 4s店收到红字发票怎么开
  • 管理费用如何分摊到项目
  • 长期股权投资权益法账务处理
  • sql2005开启xp_cmdshell
  • ubuntu mysql 5.6版本的删除/安装/编码配置文件配置
  • sql的查询分析器
  • 彻底清除硬盘中的文件
  • win7怎么删除桌面图标
  • win7速度
  • caddll丢失
  • linux查看使用率命令
  • unity对象池优缺点
  • Unity3D Editor类(Inspector) 编写经验总结
  • fragment的replace方法
  • 列举linux常用的几个命令
  • css制作排行榜
  • html中href,src区别
  • cocos2dx4.0教程
  • shell脚本用法
  • bootstrap基础教程 源代码
  • node.js中的http.response.setHeader方法使用说明
  • shell脚本运行linux命令
  • 几个常用的微课网站
  • python中怎么取整数的某位数
  • win10下python
  • js中写html代码
  • JavaScript中Math.SQRT2属性的使用详解
  • js跨域解决方案
  • python爬取新浪股票数据
  • 营业税金及附加结转分录
  • 个体工商户 浙江
  • 自然人电子税务局(扣缴端)怎么添加公司
  • 跨境电商上什么货源好
  • 耕地占用税是土地增值税扣除项目吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设