微信小程序官方动态自定义底部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 相关文章推荐
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 Javascript
详解AngularJS中自定义过滤器
Dec 28 Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 Javascript
AngularJS控制器之间的数据共享及通信详解
Aug 01 Javascript
BootStrap的table表头固定tbody滚动的实例代码
Aug 24 Javascript
JS实现拖动滚动条评分的效果代码分享
Sep 29 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
Dec 31 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
Oct 11 Javascript
第一个Vue插件从封装到发布
Nov 22 Javascript
Django与Vue语法的冲突问题完美解决方法
Dec 14 Javascript
如何实现一个简易版的vuex持久化工具
Sep 11 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
劣质的PHP代码简化
2010/02/08 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
php实现的RSS生成类实例
2015/04/23 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
Python实现的桶排序算法示例
2017/11/29 Python
Python实现识别手写数字大纲
2018/01/29 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
python switch 实现多分支选择功能
2020/12/21 Python
Python扫描端口的实现
2021/01/25 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
物流管理应届生求职信
2013/11/07 职场文书
事业单位公务员的职业生涯规划
2014/01/15 职场文书
中药学专业求职信
2014/05/31 职场文书
党支部先进事迹材料
2014/12/24 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书