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

  • 电脑网络电缆被拔出怎么解决(电脑网络电缆被拔出怎么解决办法)

    电脑网络电缆被拔出怎么解决(电脑网络电缆被拔出怎么解决办法)

  • 手机qq邮箱下载的文件在哪里找到(手机qq邮箱下载安装)

    手机qq邮箱下载的文件在哪里找到(手机qq邮箱下载安装)

  • usb2.0写入速度(usb2.0写入速度低于百m宽带)

    usb2.0写入速度(usb2.0写入速度低于百m宽带)

  • 众包差评有什么影响(众包 差评)

    众包差评有什么影响(众包 差评)

  • 华为mate30pro系统要不要更新(华为mate30pro系统最新版本)

    华为mate30pro系统要不要更新(华为mate30pro系统最新版本)

  • i5760是几代(i5 760相当于i3几代)

    i5760是几代(i5 760相当于i3几代)

  • 华为荣耀9x怎么分屏操作(华为荣耀9x怎么分屏)

    华为荣耀9x怎么分屏操作(华为荣耀9x怎么分屏)

  • 网易云音乐历史播放在哪里(网易云音乐历史头像)

    网易云音乐历史播放在哪里(网易云音乐历史头像)

  • 电脑强制关机快捷键(电脑强制关机快捷键对电脑有损害吗)

    电脑强制关机快捷键(电脑强制关机快捷键对电脑有损害吗)

  • 计算机网络wan是指什么(计算机网络wan是什么意思)

    计算机网络wan是指什么(计算机网络wan是什么意思)

  • 有什么软件可以打电话(有什么软件可以识别图片的文字)

    有什么软件可以打电话(有什么软件可以识别图片的文字)

  • 米家扫地机充完要拔电源吗(米家扫地机不会回充)

    米家扫地机充完要拔电源吗(米家扫地机不会回充)

  • 华为微信声音小怎么调大声(oppo手机微信声音小怎么调大声)

    华为微信声音小怎么调大声(oppo手机微信声音小怎么调大声)

  • 京东怎么删评论(怎样删除京东评论)

    京东怎么删评论(怎样删除京东评论)

  • 微信标签怎么删除(微信标签怎么删除里面的人)

    微信标签怎么删除(微信标签怎么删除里面的人)

  • 小爱同学可以连oppo吗(小爱同学可以连苹果手机吗)

    小爱同学可以连oppo吗(小爱同学可以连苹果手机吗)

  • qq星月童话气泡怎么弄(星月童话套装)

    qq星月童话气泡怎么弄(星月童话套装)

  • 华为备份恢复在哪找(华为备份恢复在哪里)

    华为备份恢复在哪找(华为备份恢复在哪里)

  • win10电脑时间总是不对(win10电脑时间改了又跳回去)

    win10电脑时间总是不对(win10电脑时间改了又跳回去)

  • vue使用vuedraggable拖拽组件,进行组件生成(vue使用jquery)

    vue使用vuedraggable拖拽组件,进行组件生成(vue使用jquery)

  • 爱德阿都·阿瓦罗·安第斯国家保护区内的火烈鸟,玻利维亚 (© Art Wolfe/Danita Delimont)(爱德华多·阿涅利)

    爱德阿都·阿瓦罗·安第斯国家保护区内的火烈鸟,玻利维亚 (© Art Wolfe/Danita Delimont)(爱德华多·阿涅利)

  • 和月薪5W的阿里程序员聊过后,才知道自己一直在打杂...(阿里月薪3万到手多少)

    和月薪5W的阿里程序员聊过后,才知道自己一直在打杂...(阿里月薪3万到手多少)

  • ps打不了字只显示一个点(ps打不了字只显示一个点怎么办)

    ps打不了字只显示一个点(ps打不了字只显示一个点怎么办)

  • 帝国cms 7.0怎么调用本信息所属专题,专题带链接(帝国cms php8.0)

    帝国cms 7.0怎么调用本信息所属专题,专题带链接(帝国cms php8.0)

  • 股票权类型
  • 金银首饰销售需求分析
  • 累计净值包含业务收入吗
  • 银行会计核算方法的特点
  • 全额计提坏账准备后,多久核销应收账款
  • 售后维修收入怎么入账
  • 人力资源公司代招的岗位可以去吗
  • 印花税是当月交当月的吗
  • 银行理财产品的特点
  • 企业的主管部门承担什么责任
  • 当期允许抵扣的农产品进项税额
  • 取得虚开增值税专票如何税务处理
  • 已认证的进项税额转出如何操作
  • 增值税专用发票和普通发票的区别
  • 不动产在建工程使用的外购货物
  • 建筑企业差额征收
  • 给货代付海运费手续费怎么算
  • 总分公司、母子公司:三流不一致情况下,如何抵扣增值税?
  • 企业外购产品
  • 企业长期股权投资
  • 软件开发公司怎么选择
  • windows登录提示
  • mac怎么传文件到百度网盘上
  • 员工宿舍水电费计入什么会计科目
  • 小微企业工业企业认定标准
  • 持有至到期投资和债权投资的区别
  • 建筑企业收到预收账款要交增值税吗
  • win10预安装环境
  • 桌面鼠标右键菜单设置
  • php使用pdo连接数据库
  • shpc32.exe - shpc32是什么进程 有什么用
  • 华硕笔记本装win8
  • 发票失控进项转出所得税
  • 加班车费报销计入什么科目
  • PHP:Memcached::fetchAll()的用法_Memcached类
  • 外地企业预缴税款流程
  • php自定义函数的语法格式
  • 结转完工产品成本计算公式
  • 实际借款成本率
  • 集团的资产
  • 固定资产一次性扣除后第二年账务处理
  • 应收账款确认无法收回
  • 资产负债表中的应收账款应根据什么填列
  • 个人所得税零报税怎么报
  • 工会经费计提基数包括绩效工资吗
  • 2021mathorcupc题答案
  • javascript bom dom
  • 智能优化算法主要内容
  • 旅行社差额征税政策
  • 现销和赊销对利润质量的影响
  • 未开票收入是否含税
  • 链表的优缺点有哪些
  • 设计费可以抵扣进项吗
  • 印花税已缴税额
  • 小规模纳税人附加税减免政策2023
  • 应收利息科目的表述
  • 购房补贴退契税多久到账
  • 工会经费计提分录最新规定
  • 未取得发票如何报销
  • 退休人员的返聘协议模板
  • 其它综合收益包括
  • 专利年费计入什么科目没有研发费用
  • 财务报表项目认定有哪些
  • 房地产开发企业增值税怎么算
  • qq远程协助点不动
  • 修改windows host文件
  • linux lxd
  • 在unix操作系统中,账户的功能有哪些
  • diy组装电脑前置怎么样
  • 如何禁止windows7自动更新
  • xp系统做完了进不去
  • win10如何将我的电脑添加到桌面
  • rmxp4droid for 天敏电视盒子
  • 铁嘴啥意思
  • 利用百度地图画cad图
  • android游戏开发用什么语言
  • 如何实现js对象和json数据互转
  • 分享一些常用的文件
  • node socket hang up
  • onSaveInstanceState和onRestoreInstanceState触发的时机
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设