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

  • 编写微博推广文案的几个方法(微博推广文案的三要素是什么)

    编写微博推广文案的几个方法(微博推广文案的三要素是什么)

  • 红米k50可以无线充电吗(红米k40有没有无线充电)

    红米k50可以无线充电吗(红米k40有没有无线充电)

  • 拼多多怎么隐藏个人信息(拼多多怎么隐藏手机号和姓名)

    拼多多怎么隐藏个人信息(拼多多怎么隐藏手机号和姓名)

  • ios15左侧搜索页面怎么关掉(苹果手机左边页面的搜索有什么用)

    ios15左侧搜索页面怎么关掉(苹果手机左边页面的搜索有什么用)

  • win10桌面图标不见了怎么办(win10桌面图标不能随意拖拽)

    win10桌面图标不见了怎么办(win10桌面图标不能随意拖拽)

  • 三星Galaxy Note 20 Ultra 5g版屏幕尺寸是多少

    三星Galaxy Note 20 Ultra 5g版屏幕尺寸是多少

  • 华为nova5pro插卡孔在哪(华为nova5pro手机卡怎么插)

    华为nova5pro插卡孔在哪(华为nova5pro手机卡怎么插)

  • 电脑更新重启后开不了机怎么办(电脑更新重启后一直黑屏怎么办)

    电脑更新重启后开不了机怎么办(电脑更新重启后一直黑屏怎么办)

  • uos操作系统是哪个公司

    uos操作系统是哪个公司

  • iphonese无线充电多少w(iphonese无线充电没有动画)

    iphonese无线充电多少w(iphonese无线充电没有动画)

  • 华为mate20pro耳机孔在哪(华为mate20Pro耳机)

    华为mate20pro耳机孔在哪(华为mate20Pro耳机)

  • 三星S10+能不能用45w充电器(三星s10+能不能更新4.0)

    三星S10+能不能用45w充电器(三星s10+能不能更新4.0)

  • hdi板与普通pcb的区别(hdi板是用在什么上的)

    hdi板与普通pcb的区别(hdi板是用在什么上的)

  • qq说说删了名片上还显示(qq说说删掉)

    qq说说删了名片上还显示(qq说说删掉)

  • 为什么wifi进不去网站(为什么wifi进不去appstore)

    为什么wifi进不去网站(为什么wifi进不去appstore)

  • qq私密说说别人能看到吗(qq说说设为私密别人能看到吗)

    qq私密说说别人能看到吗(qq说说设为私密别人能看到吗)

  • 在语言处理程序中解释程序的功能是(语言处理程序实现途径主要有哪两种方式)

    在语言处理程序中解释程序的功能是(语言处理程序实现途径主要有哪两种方式)

  • oppo没有密码怎么还原手机(oppo没有密码怎么解开手机)

    oppo没有密码怎么还原手机(oppo没有密码怎么解开手机)

  • 抖音收藏的视频在哪里可以看(抖音收藏的视频收藏夹里不显示)

    抖音收藏的视频在哪里可以看(抖音收藏的视频收藏夹里不显示)

  • 淘宝两人拼团怎么发货(淘宝怎么和好友拼单)

    淘宝两人拼团怎么发货(淘宝怎么和好友拼单)

  • 苹果7停产了吗(苹果7停产了吗最新消息)

    苹果7停产了吗(苹果7停产了吗最新消息)

  • pot tl00a是什么型号(pot-tl00a价格)

    pot tl00a是什么型号(pot-tl00a价格)

  • 苹果智能辅助在哪(iphone智能辅助怎么设置)

    苹果智能辅助在哪(iphone智能辅助怎么设置)

  • 苹果手机需要清理垃圾吗(苹果手机需要清理病毒吗)

    苹果手机需要清理垃圾吗(苹果手机需要清理病毒吗)

  • 多多农场怎样防偷金币(多多农场坑人)

    多多农场怎样防偷金币(多多农场坑人)

  • k8s 部署nginx 实现集群统一配置,自动更新nginx.conf配置文件 总结(k8s部署ingress-nginx)

    k8s 部署nginx 实现集群统一配置,自动更新nginx.conf配置文件 总结(k8s部署ingress-nginx)

  • 什么是企业增值税和所得税
  • 企业所得税要交多少税
  • 一般纳税人开劳务专票多少个点
  • 前一年的发票第二年改抬头
  • 劳务报酬现金 过账
  • 收到代发工资的信息
  • 企业预缴的增值税收入算不算企业的销售收入
  • 固定资产的折旧费用计入什么科目
  • 减免增值税后附加税还用计提吗
  • 账外房产按评估入账怎么交税
  • 小规模纳税人的税率是多少(含国、地税)
  • 会计档案的概念和内容
  • 应收未收的利息如何处理
  • 外贸企业购买生产车辆
  • 年终奖需要计入工资交社保吗
  • 理财认购申购
  • 华为分享怎么用详细教程
  • 支付项目工程款可以借流贷吗
  • win7音频服务未运行怎么办
  • 无法找到脚本文件vbs
  • php解密在线
  • postgres.exe是什么进程 postgres进程查询
  • 天猫魔合
  • PHP:is_dir()的用法_Filesystem函数
  • 增值税专用发票丢了怎么补救
  • Obsidian:实现日记记录【设计并使用模板】
  • vue获取input
  • 2023前端面试题百度云
  • 一个实用的php验证
  • 营业外收入不计入所有者权益吗
  • 小规模纳税人开专票需要交税吗
  • rep p
  • 微信小程序开发公司
  • element excel
  • 可供出售金融资产公允价值变动
  • 没有开发票的收入
  • 当月的印花税什么时候申报
  • 无盘领发票要怎么办
  • 银行同业利率
  • 4s店收到红字发票怎么办
  • 公司未成立前的花费算出资额吗
  • wordpress换域名后主题乱了
  • 耕地税税率是多少
  • 工程提成会计分录怎么做
  • 发票商品分类
  • 发票普票增票
  • 固定资产折旧及残值率
  • 装饰公司购入材料税额会计分录
  • 员工报销货款会计分录怎么写
  • 库存股会计处理流程
  • 材料会计的内容
  • 前几个月的印花税怎么算
  • 代垫运杂费计入销售收入吗
  • 一般纳税人附加税
  • 关于外贸企业出口的规定
  • 填制记账凭证有哪些
  • 苹果发布会最新消息
  • windows隐藏功能
  • Win7系统重装后开不了机
  • win8.1怎么改win7系统
  • window10运行框
  • sdis.exe
  • RadioSvr.EXE - RadioSvr是什么进程 有什么用
  • icore是什么意思
  • 联想安装xp系统
  • 双液浆常用配合比
  • 折腾linux 没意义
  • cocos怎么用
  • javascript 浏览器
  • 用python写网页
  • [置顶]bilinovel
  • vue3 todo
  • linux磁盘空间满了怎么办,硬盘空间还有很多
  • centos上安装邮件服务器
  • unity的gui
  • android 图片裁剪 任意形状
  • 江西低保查询系统
  • 如何查看自己公司的税种
  • 地铁发票如何取得
  • 工厂的税率是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设