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

  • 小米手表color运动版怎么连接手机(小米手表color运动版和普通版区别)

    小米手表color运动版怎么连接手机(小米手表color运动版和普通版区别)

  • 苹果live照片怎么保存到电脑(苹果live照片怎么导出保存)

    苹果live照片怎么保存到电脑(苹果live照片怎么导出保存)

  • 斗鱼app怎么退出登录(斗鱼手机怎么退出登陆)

    斗鱼app怎么退出登录(斗鱼手机怎么退出登陆)

  • 苹果11如何使用自己的铃声(苹果11如何使用nfc门禁卡功能)

    苹果11如何使用自己的铃声(苹果11如何使用nfc门禁卡功能)

  • 苹果ipad计算器在哪里(苹果ipad计算器删除怎么恢复)

    苹果ipad计算器在哪里(苹果ipad计算器删除怎么恢复)

  • ccd相机是胶片机吗(ccd相机和胶片相机区别)

    ccd相机是胶片机吗(ccd相机和胶片相机区别)

  • word段后间距怎么设置6磅(word段后间距0.3厘米怎么设置)

    word段后间距怎么设置6磅(word段后间距0.3厘米怎么设置)

  • 华为手机刷机后原来注册的账号还可以用吗(华为手机刷机后怎么跳过激活设备)

    华为手机刷机后原来注册的账号还可以用吗(华为手机刷机后怎么跳过激活设备)

  • 抖音私信已送达对方能看到吗(抖音私信已送达 是对方没有看吗)

    抖音私信已送达对方能看到吗(抖音私信已送达 是对方没有看吗)

  • qq删除好友后聊天记录还在吗(qq删除好友后聊天记录会保留多久)

    qq删除好友后聊天记录还在吗(qq删除好友后聊天记录会保留多久)

  • 充电器的输入和输出是什么意思(充电器的输入和输出接口)

    充电器的输入和输出是什么意思(充电器的输入和输出接口)

  • qq昵称变成qq号(qq昵称变成qq号怎么改回来)

    qq昵称变成qq号(qq昵称变成qq号怎么改回来)

  • 查看qq签名对方知道吗(查看qq签名对方能看到吗)

    查看qq签名对方知道吗(查看qq签名对方能看到吗)

  • surface型号1769是几代(surface1709是什么型号)

    surface型号1769是几代(surface1709是什么型号)

  • u盘几十年不用东西会丢吗(u盘很多年不用会坏吗)

    u盘几十年不用东西会丢吗(u盘很多年不用会坏吗)

  • 手机如何进入qq中心(手机如何进入qq农场)

    手机如何进入qq中心(手机如何进入qq农场)

  • 手机入水怎样快把水弄干(手机进水怎么速干)

    手机入水怎样快把水弄干(手机进水怎么速干)

  • vue怎么加滚动的字幕(vue怎么添加滚动字幕)

    vue怎么加滚动的字幕(vue怎么添加滚动字幕)

  • wifi已连接但有感叹号(wifi已连接但有问号需要登录认证)

    wifi已连接但有感叹号(wifi已连接但有问号需要登录认证)

  • 手机上怎么查看图片位置(手机上怎么查看wifi被多少个人连接)

    手机上怎么查看图片位置(手机上怎么查看wifi被多少个人连接)

  • 毒app一直收不到验证码(为什么毒收件人没收到短信)

    毒app一直收不到验证码(为什么毒收件人没收到短信)

  • 苹果微博缓存怎么看(苹果微博缓存的文件在哪里)

    苹果微博缓存怎么看(苹果微博缓存的文件在哪里)

  • 蚂蚁森林加速器快多久(蚂蚁森林加速器能加速多久)

    蚂蚁森林加速器快多久(蚂蚁森林加速器能加速多久)

  • 荔枝下载的声音在哪

    荔枝下载的声音在哪

  • 悬崖上雕刻的古老岩石墓葬,土耳其达利安附近 (© Reinhard Schmid/eStock Photo)(悬崖雕塑)

    悬崖上雕刻的古老岩石墓葬,土耳其达利安附近 (© Reinhard Schmid/eStock Photo)(悬崖雕塑)

  • 航信金税盘时间校准
  • 季度所得税计提
  • 个人独资企业税种有哪些
  • 天然气管道维修收费标准
  • 预收账款期末余额计算公式
  • 固定资产累计折旧是什么科目
  • 其他应付款二级明细
  • 年报中的工会经费是什么
  • 银行开户许可证图片
  • 国内旅客运输服务电子普通发票
  • 法人变更注册资金降低以前的债务怎么处理
  • 原材料盘亏会计分录怎么做
  • 应交增值税明细科目核算内容
  • 员工出差住宿费计入什么科目
  • 房地产企业进项税额转出
  • 未确认融资费用借贷方向
  • 评估增值的差额是什么
  • 应交税费应交增值税
  • 认缴制下股权转让如何不交税
  • 税友软件费用
  • 发票对方已认证怎么冲红
  • 个人所得税app入职时间不对
  • 购买办公桌椅属于什么费用
  • 个人买卖二手房增值税
  • 增值税预缴税款表
  • 小规模纳税人月销售额不超过10万免征
  • 财产清查的会计分录
  • 个人股东分红如何合理避税
  • 库存商品过期报损
  • 开电脑店几年搞活动好吗
  • windows10office更新
  • 已达到计算机的连接数最大值win7
  • 装修公司开专票要交几个点
  • packethsvc.exe - packethsvc是什么进程 有什么用
  • php vr
  • 免抵退税怎么做账
  • 浠字的意思和含义是什么
  • 纳税人提供劳务派遣服务,选择差额纳税的,按照5%
  • 泛微oa二次开发难吗
  • 基于改进yolov4论文
  • 劳务公司成本核算方法选择什么
  • vue 组件
  • 核定征收的纳税人能否享受六税两费减免
  • apache trace
  • 上一年度企业所得税汇算清缴
  • 应付账款转入营业外收入的证明
  • 员工洗衣机使用制度
  • 向境外股东分配股息预提所得税
  • 非货币性资产交换和债务重组的区别
  • 企业需要购买两种保险吗
  • 如何恢复sql server误删除的数据库
  • 资产损失账务处理要求
  • 劳动法辞退员工补偿标准2023
  • 收到备用金会计分录
  • 必要报酬率和期望报酬率谁大更好
  • 公允价值变动损益借贷方向增减
  • 支付境外培训费要交关税么
  • 企业清算未分配利润怎么个税
  • 公司员工入职的心得体会
  • 民办非企业单位什么意思
  • 固定资产更换配件 资本化标准
  • 稳定用工社保补贴怎么领
  • 税金及附加科目借贷方向
  • 发票丢失如何处理入账
  • window8.1蓝屏
  • linux怎样安装
  • centos好玩的命令
  • win7系统怎么禁止软件自启动
  • xp如何一键还原系统还原
  • js控制display属性
  • shell 时间运算
  • jquery mouse
  • jquery实现ajax加载超时提示的方法
  • jquery deferred对象
  • 代收代付税务条件
  • 科技型中小企业认定有效期
  • 开普通发票必须要纳税人识别号吗?
  • 国家税务局令第16号文
  • 怎么查询地税信息表
  • 将购进农产品用于生产销售或委托加工货物的税率多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设