位置: 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)(图森在哪)

  • 怎么制作表格excel新手(怎么制作表格)(怎么制作表格excel初学者)

    怎么制作表格excel新手(怎么制作表格)(怎么制作表格excel初学者)

  • iphone13安装软件需要按两下(iphone13安装软件每次都要输入密码)

    iphone13安装软件需要按两下(iphone13安装软件每次都要输入密码)

  •  新浪微博怎么取消地理位置(新浪微博怎么找人)

    新浪微博怎么取消地理位置(新浪微博怎么找人)

  • 4k和1080p的区别是什么(分辨率4k和1080p的区别)

    4k和1080p的区别是什么(分辨率4k和1080p的区别)

  • 三星手机软件在桌面消失了(三星手机 软件)

    三星手机软件在桌面消失了(三星手机 软件)

  • 为什么oppo手机没有录屏功能(为什么oppo手机打不开)

    为什么oppo手机没有录屏功能(为什么oppo手机打不开)

  • 视频通话可以录下来吗

    视频通话可以录下来吗

  • 荣耀平板5支持手写笔吗(荣耀平板5支持鸿蒙吗)

    荣耀平板5支持手写笔吗(荣耀平板5支持鸿蒙吗)

  • 小米手环4监管是什么意思(小米手环4监管请先绑定恢复出厂)

    小米手环4监管是什么意思(小米手环4监管请先绑定恢复出厂)

  • 惠普打印机换墨盒后无法打印(惠普打印机换墨盒后怎么校准)

    惠普打印机换墨盒后无法打印(惠普打印机换墨盒后怎么校准)

  • vivo手机充电越充越少怎么办(vivo手机充电越充越少怎么解决视频)

    vivo手机充电越充越少怎么办(vivo手机充电越充越少怎么解决视频)

  • oppo手机没电怎么恢复电量(OPPO手机没电怎么开机)

    oppo手机没电怎么恢复电量(OPPO手机没电怎么开机)

  • 短信发不出去是被拉黑了吗(短信发不出去是什么问题)

    短信发不出去是被拉黑了吗(短信发不出去是什么问题)

  • 手机热点电视投屏耗流量吗(手机热点跟电视怎么连接投屏)

    手机热点电视投屏耗流量吗(手机热点跟电视怎么连接投屏)

  • ipad4怎么设置手写(ipadair4怎么设置手势)

    ipad4怎么设置手写(ipadair4怎么设置手势)

  • 芒果tv账号在哪里看(芒果tv账号在哪里登陆)

    芒果tv账号在哪里看(芒果tv账号在哪里登陆)

  • 58如何看到真实号码(58如何看到真实号码信息)

    58如何看到真实号码(58如何看到真实号码信息)

  • 小米9怎么设置微信提示音(小米9怎么设置nfc门禁卡)

    小米9怎么设置微信提示音(小米9怎么设置nfc门禁卡)

  • ipad air3支持快充吗(ipadair3可以用快充充电吗)

    ipad air3支持快充吗(ipadair3可以用快充充电吗)

  • 微信如何群发语音(微信如何群发语音给别人)

    微信如何群发语音(微信如何群发语音给别人)

  • 华为手机钱包在哪里(华为手机钱包在哪里打开)

    华为手机钱包在哪里(华为手机钱包在哪里打开)

  • 拼多多如何注册开店(拼多多如何注册新店铺)

    拼多多如何注册开店(拼多多如何注册新店铺)

  • 在win7系统中无法创建文件夹怎么办?(win7系统为什么没有无线网络连接)

    在win7系统中无法创建文件夹怎么办?(win7系统为什么没有无线网络连接)

  • vue项目控制台报错信息问题记录:Uncaught TypeError: Cannot read properties of null (reading ‘setAttribute‘)(vue项目管理器)

    vue项目控制台报错信息问题记录:Uncaught TypeError: Cannot read properties of null (reading ‘setAttribute‘)(vue项目管理器)

  • 查付款记录需要什么?
  • 其他权益工具投资科目编码
  • 不能从销项税额中抵扣的进项税额都有什么
  • 耕地占用税的税目
  • 工程施工的间接费用怎么结转
  • 个税申报赡养老人只能填一个吗
  • 个税身份证验证怎么弄
  • 联合体项目工程款如何拨付
  • 消费税为什么要计入成本
  • 年底员工借款如何处理
  • 残料的会计分录
  • 境外单位向境内单位提供咨询
  • 小规模纳税人查账征收所得税税率
  • 创可贴属于什么费用科目
  • 承租方出售资产的行为
  • 什么是所有者权益?其包括哪些内容
  • 小额贷款公司借钱容易吗
  • 差旅费报销单填写模板
  • 取得的分成收入怎么计算
  • 产品研发费用计入什么科目
  • 研发样机转销售合法吗
  • 公司没有残疾人需要缴纳残保金吗
  • 小规模税收减免
  • 免征的税款每月几号申报
  • 以前年度的库存商品出现负数今年如何入账
  • 报废资产未及时核销
  • 购买机器配件怎么做会计分录
  • 媒体文件不能播放
  • win11 恢复
  • 在linux系统中 用来存放系统所需
  • 笔记本默认网关不可用怎么修复
  • 采购涉及哪些部门
  • 自产货物用于生产
  • 在建工程进项税可以抵扣吗
  • 进货后退货的会计处理
  • 若依名字的含义是什么意思
  • php图片库
  • 金税盘发票数据导出不完整
  • php的foreach遍历原理
  • 为什么没缴税
  • 利息支出税前扣除时间
  • 固定资产怎么确定折旧年限
  • 广东高速公路过路费收费标准
  • 小规模纳税人会自动转为一般纳税人
  • 预付账款未发货会计分录
  • 息税前利润变动率的计算公式
  • 普通发票记账联丢了怎么解决
  • 坏账准备的计提方法有哪些
  • 购房契税如何入账
  • 税务滞纳金计入什么会计科目
  • 被收购企业账务处理流程
  • 万达对赌协议是什么
  • 申报个税劳务报酬按20%扣
  • 企业去银行
  • 资产负债表怎么看财务状况
  • 规范的记账凭证是什么
  • sqlserver的sql文件导入mysql
  • mysql5.7.35安装
  • win10预览版和正式版区别
  • 远程桌面安装
  • win10系统中怎么打开IE浏览器
  • ubuntu20.4 ssh
  • windows关闭安全引导
  • win8怎么打开管理员命令提示符
  • centos7如何添加光盘
  • linux ftp服务端
  • win7旗舰版使用ie8特别卡怎么回事?
  • 免费升级windows10
  • win7怎么查看电池信息
  • 凭据管理器 win10
  • cmd 字符集
  • unity怎么学
  • python批量执行命令
  • 个体经营所得申报密码怎样设置
  • 河南灵活就业缴费截止时间
  • 地税税额怎么计算
  • 太原公安分局有几个
  • 新沂恩华大药房会员日
  • 税务局诉讼
  • 房产证是有开发商办吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设