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

  • 增值税发票综合服务平台密码
  • 多余的进项税该怎么处理
  • 费用发票能不能直接挂应付账款里
  • 集团公司收到的发票
  • 资本金利润率多少
  • 应收账款周转率越大越好还是越小越好
  • 公司转让股权要去税务吗
  • 买车的保险可以砍价吗
  • 税收分类编码选错了有事吗
  • 企业房产使用税
  • 环境保护税的计算例题
  • 发票专用章能刻章吗
  • 增值税专用发票和普通发票的区别
  • 公司的固定资产如何转变为股东资产
  • 收到一笔款在在当月已退回怎么做账?
  • 社会团体的费用包括哪些
  • 城建税有哪些征税项目
  • 怎样启动powerpoint
  • word字体平滑
  • 怎么保存win10锁屏界面
  • 英雄联盟怎么改左键移动
  • 企业不得抵扣进项税
  • 品牌转让怎么写
  • mac cpu
  • ipad os 16
  • PHP json_encode() 函数详解及中文乱码问题
  • win10蓝牙怎么开ldac
  • 已入账的发票跨月能用吗
  • 销售自己使用过的旧货
  • 2022最新廉洁警示语句
  • 会计财务报表的编制步骤
  • phpjson
  • AIGC之GPT-4:GPT-4的简介(核心原理/意义/亮点/技术点/缺点/使用建议)、使用方法、案例应用(计算能力/代码能力/看图能力等)之详细攻略
  • touch命令创建多个文件
  • 营业外支出贷方在利润表怎么体现
  • 产生滞纳金有什么影响
  • 非限定性净资产包括哪些科目
  • 自由会计服务类工作者
  • 投资款印花税税源采集表税目
  • 累计盈余需要设置明细科目吗
  • 工程发票多少点
  • 管理费用的核算内容主要包括哪些
  • 银行日记账怎么做账
  • mysql的lsn
  • 公司注销了,账务是不是可以销毁了
  • 兼职收入用缴纳增值税吗
  • 支付长期借款利息
  • 市政建设配套费 契税
  • 销项100万进项80万交多少税
  • 应付账款借方余额负数表示什么
  • 代开专票作废了扣了两次税怎么办?
  • 以前年度多计提了费用
  • 计提应付职工薪酬在借方还是贷方
  • 小微企业应交增值税如何记账
  • 免征增值税还要计提附加税吗
  • 生产的半成品怎么做分录
  • 建立明细账科目怎么排顺序
  • mysql5.7.19 zip 详细安装过程和配置
  • window10运行框
  • Red Hat Enterprise Linux 5.X的图形安装教程
  • win8.1怎么关机快捷键
  • win7防火墙打不开错误代码6801
  • window8设置在哪里
  • linux系统怎么切换到命令行
  • 开源镜像下载到本地
  • win8外接显示器没反应怎么办
  • node async await
  • three.js菜鸟教程
  • cocos开发游戏
  • Node.js中的事件循环是什么
  • python100行代码案例
  • unity3d添加组件
  • javascript Keycode对照表
  • python在设计领域的应用
  • 怎么用js实现滑动效果
  • python中url
  • 如何查发票是否作废
  • 铁岭医保网上怎么交费
  • 公司买的保险怎么查询保单明细
  • 国家税务总局可以设定行政处罚吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设