最近開發微信小程序,公司要求作一個相似閒魚的tabbar,可是網上大多資料的tabbar都會在頁面切換的時候從新渲染,因此我寫了一個不會從新渲染的tabbar,有須要的直接拿走不謝。https://github.com/SuRuiGit/w...git
第一步:找到項目中的tabbarComponent目錄,拷貝到你的工程中,而後將tabbarComponent->icon圖標替換成你本身的tabbar圖片github
第二步:到app.json中配置tabBar,這裏我就不細說了,只強調閒魚的tabbar中間的按鈕是跳到二級頁面,因此不配置在tabBar的list中json
第三步:在app.js的onLaunch方法中調用wx.hideTabBar();隱藏系統自帶的tabBar小程序
第四步:在app.js中的globalData中加入自定義tabbar的參數,再加入一個方法給tabBar.list配置中的頁面使用,代碼以下微信小程序
globalData: { userInfo: null, tabBar: { "backgroundColor": "#ffffff", "color": "#979795", "selectedColor": "#1c1c1b", "list": [ { "pagePath": "/page/index/index", "iconPath": "icon/icon_home.png", "selectedIconPath": "icon/icon_home_HL.png", "text": "首頁" }, { "pagePath": "/page/myRelease/index", "iconPath": "icon/icon_release.png", "isSpecial": true, "text": "發佈" }, { "pagePath": "/page/mine/index", "iconPath": "icon/icon_mine.png", "selectedIconPath": "icon/icon_mine_HL.png", "text": "個人" } ] } }
editTabbar: function() { let tabbar = this.globalData.tabBar; let currentPages = getCurrentPages(); let _this = currentPages[currentPages.length - 1]; let pagePath = _this.route; (pagePath.indexOf('/') != 0) && (pagePath = '/' + pagePath); for (let i in tabbar.list) { tabbar.list[i].selected = false; (tabbar.list[i].pagePath == pagePath) && (tabbar.list[i].selected = true); } _this.setData({ tabbar: tabbar }); },
第五步:在tabBar的list中配置的頁面的.js文件的data中加入tabbar:{},並在onload方法中調用app.editTabbar();微信
第六步:在tabBar的list中配置的頁面的.json文件中加入app
"usingComponents": {ide
"tabbar": "../../tabbarComponent/tabbar"ui
}this
在.wxml文件中加入<tabbar tabbar="{{tabbar}}"></tabbar>
到目前爲止,自定義tabbar就完成啦,撒花!!!!!