微信小程序官方动态自定义底部tabBar的例子


Posted in Javascript onSeptember 04, 2019

最近在做小程序的项目,由于用户需求在进入页面时进行选则角色,然后再进入小程序,这时看到的底部菜单看到的不一样,而我们都知道原生的tabBar是不支持这种做法的。在网上搜集了海量资料后发现无非两种解决方法:1.是建立模板,可是会有不能忍受的抖动;2.是利用小程序的组件开发;但是项目已经进行了一般,不可能再进行大的改变;

怎么办呢??

无意在一条评论中发现说微信官方已经提供该组件,于是在小程序文档中寻找很久才在一个犄角旮旯找到:地址链接、

先看效果图:

微信小程序官方动态自定义底部tabBar的例子

1.首先看一下官方用法

这是几个非常重要你需要知道的

2.小程序提供了一个例子

在这个例子中有一个微信官方提供的组件:下载地址

组件的目录结构:

微信小程序官方动态自定义底部tabBar的例子

3.就是我们要根据需求改造

自己改造的目录结构如下:

微信小程序官方动态自定义底部tabBar的例子

1.首先配置app.json

"tabBar": {
 "custom": true,//这个要有, 前面都提到过,注释要删了
 "color": "#7A7E83",
 "selectedColor": "#3cc51f",
 "borderStyle": "black",
 "backgroundColor": "#ffffff",
 "list": [
  {
   "pagePath": "pages/index1/index1",
   "iconPath": "/image/home.png",
   "selectedIconPath": "/image/home1.png",
   "text": "首页1"
  },
  {
   "pagePath": "pages/mine1/mine1",
   "iconPath": "/image/user.png",
   "selectedIconPath": "/image/user1.png",
   "text": "我的1"
  },
  {
   "pagePath": "pages/index2/index2",
   "iconPath": "/image/home.png",
   "selectedIconPath": "/image/home1.png",
   "text": "首页2"
  },
  {
   "pagePath": "pages/mine2/mine2",
   "iconPath": "/image/user.png",
   "selectedIconPath": "/image/user1.png",
   "text": "我的2"
  }
 ]
},//这个
"usingComponents": {}

2.app.js

//app.js
App({
 onLaunch: function () {
 },
 globalData: {
  userInfo: null,
  list:[] //存放tabBar的数据
 }
})

3.改造组件

custom-tab-bar/index.js

const app =getApp();
Component({
 data: {
  selected: 0,
  color: "#7A7E83",
  selectedColor: "#ff6700",
  list: [] //tabBar的数据
 },
 lifetimes: {
  //组件的生命周期函数
  attached() {
   this.setData({
    list: app.globalData.list
   })
  },
 },
 methods: {
  switchTab(e) {
   const data = e.currentTarget.dataset
   const url = data.path
   wx.switchTab({url})
   this.setData({
    selected: data.index
   })
  }
 }
})

4.下面就是用了

在首页index.wxml定义了两个按钮

<button bindtap='tab1'>进入tab1</button>
<button bindtap='tab2'>进入tab2</button>

时间:index.js

tab1: function() {
  app.globalData.list = [{
    "pagePath": "/pages/index1/index1",
    "iconPath": "/image/home.png",
    "selectedIconPath": "/image/home1.png",
    "text": "首页1"
   },
   {
    "pagePath": "/pages/mine1/mine1",
    "iconPath": "/image/user.png",
    "selectedIconPath": "/image/user1.png",
    "text": "我的1"
   }
  ]
  wx.switchTab({
   url: '../index1/index1',
  })
 },
 tab2: function() {
  app.globalData.list = [{
    "pagePath": "/pages/index2/index2",
    "iconPath": "/image/home.png",
    "selectedIconPath": "/image/home1.png",
    "text": "首页2"
   },
   {
    "pagePath": "/pages/mine2/mine2",
    "iconPath": "/image/user.png",
    "selectedIconPath": "/image/user1.png",
    "text": "我的2"
   }
  ]
  wx.switchTab({
   url: '../index2/index2',
  })
 }

5.在每个tabBar中的onshow()方法中添加如下:

//添加选中效果
if (typeof this.getTabBar === 'function' &&
   this.getTabBar()) {
   this.getTabBar().setData({
    selected: 0 //这个数是,tabBar从左到右的下标,从0开始
   })
  }

另外调整基础库版本的地方在

微信小程序官方动态自定义底部tabBar的例子

源代码下载地址

总结

以上所述是小编给大家介绍的微信小程序官方动态自定义底部tabBar的例子,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
Feb 21 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
Apr 03 Javascript
jQuery中:submit选择器用法实例
Jan 03 Javascript
javascript实现英文首字母大写
Apr 23 Javascript
JavaScript获取对象在页面中位置坐标的方法
Feb 03 Javascript
编写高质量JavaScript代码的基本要点
Mar 02 Javascript
基于Vuejs和Element的注册插件的编写方法
Jul 03 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
如何进行微信公众号开发的本地调试的方法
Jun 16 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 jQuery
JavaScript Html实现移动端红包雨功能页面
Jan 10 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
Sep 04 #Javascript
layui 表单标签的校验方法
Sep 04 #Javascript
解决layui 表单元素radio不显示渲染的问题
Sep 04 #Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 #Javascript
Element 默认勾选表格 toggleRowSelection的实现
Sep 04 #Javascript
使用Angular material主题定义自己的组件库的配色体系
Sep 04 #Javascript
vue-loader中引入模板预处理器的实现
Sep 04 #Javascript
You might like
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
一个SQL管理员的web接口
2006/10/09 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
angular2使用简单介绍
2016/03/01 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
对Python 语音识别框架详解
2018/12/24 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
Python正则表达式如何匹配中文
2020/05/27 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
Unix如何添加新的用户
2014/08/20 面试题
物流管理专业大学生自荐信
2013/10/04 职场文书
平民服装店创业计划书
2014/01/17 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
python分分钟绘制精美地图海报
2022/02/15 Python
vue3获取当前路由地址
2022/02/18 Vue.js
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL