最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序自定義tabBar的踩坑實(shí)踐記錄

 更新時(shí)間:2020年11月06日 10:06:37   作者:江不知  
這篇文章主要給大家介紹了關(guān)于微信小程序自定義tabBar的踩坑實(shí)踐記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

微信官方文檔對(duì)自定義 tabBar 的闡述較為潦草,在開(kāi)發(fā)自定義 tabBar 過(guò)程中我踩了很多坑,因此在此處做個(gè)總結(jié)。

我使用 Vant Weapp 作為 UI 組件庫(kù),下面以此組件庫(kù)為例。

定義 tabBar

創(chuàng)建自定義 tabBar 文件

創(chuàng)建一個(gè)與 /pages 的同級(jí)目錄,命名為  /custom-tab-bar,注意目錄層級(jí)與目錄命名問(wèn)題,不可用其他名稱(chēng)命名。
在 /custom-tab-bar 下創(chuàng)建四個(gè)文件:

index.js
index.json
index.wxml
index.wxss

index.js

在 index.js 中我們定義相關(guān)數(shù)據(jù):

  • active:當(dāng)前被點(diǎn)擊 tab 的索引
  • list:tab 列表

以及一個(gè)切換 tab 時(shí)觸發(fā)的方法:

function onChange(event):標(biāo)簽切換時(shí)觸發(fā),修改 active 值,點(diǎn)亮被點(diǎn)擊的 tab 并進(jìn)行頁(yè)面跳轉(zhuǎn)

Component({
 data: {
 // 選中的 tab 
 active: null,
 // 菜單列表
 list: [
  {
  pagePath: '/pages/subscriptions/subscriptions',
  text: '訂閱',
  name: 'subscriptions',
  icon: 'bullhorn-o'
  },
  {
  pagePath: '/pages/profile/profile',
  text: '我的',
  name: 'profile',
  icon: 'user-o'
  }
 ]
 },
 methods: {
 // 標(biāo)簽切換
 onChange: function (event) {
  this.setData({ active: event.detail })
  wx.switchTab({
  url: this.data.list[event.detail].pagePath,
  })
 }
 }
})

index.json

在 index.json 中,將 component 參數(shù)值設(shè)為 true,代表這是一個(gè)自定義組件:

{
 "component": true
}

因?yàn)槲沂褂昧?a target="_blank" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Vant Weapp 的 tabBar 標(biāo)簽欄,所以還需引入額外組件:

{
 "component": true,
 "usingComponents": {
 "van-tabbar": "@vant/weapp/tabbar/index",
 "van-tabbar-item": "@vant/weapp/tabbar-item/index",
 "van-icon": "@vant/weapp/icon/index"
 }
}

index.wxml

在 index.wxml 中定義組件形態(tài),我在此處使用Vant Weapp tabBar 標(biāo)簽欄,詳見(jiàn)代碼,不再贅述。

<van-tabbar active="{{ active }}" bind:change="onChange">
 <van-tabbar-item 
 wx:for="{{list}}" 
 wx:key="index"
 icon="{{item.icon}}" 
 data-path="{{item.pagePath}}">
 {{item.text}}
 </van-tabbar-item>
</van-tabbar>

配置 app.json

在 app.json 中配置如下參數(shù):

  • usingComponents:僅聲明即可
  • tabBar:tabBar 組件的具體配置
    • custom:設(shè)為 true,表示使用自定義組件
    • list:tab 頁(yè)列表,在列表中的頁(yè)面將被設(shè)置為 tab 頁(yè),自動(dòng)加載 tabBar
{
 "usingComponents":{

 },
 "tabBar":{
  "custom":true,
  "color":"#000000",
  "selectedColor":"#000000",
  "backgroundColor":"#000000",
  "list":[
   {
    "pagePath":"pages/subscriptions/subscriptions",
    "text":"訂閱列表",
    "iconPath":"",
    "selectedIconPath":""
   },
   {
    "pagePath":"pages/profile/profile",
    "text":"關(guān)于我",
    "iconPath":"",
    "selectedIconPath":""
   }
  ]
 }
}

實(shí)現(xiàn) tabBar 選中態(tài)

根據(jù)微信官方文檔描述,每個(gè) tab 頁(yè)面 tabBar 的實(shí)例是不同的:

每個(gè) tab 頁(yè)下的自定義 tabBar 組件實(shí)例是不同的,可通過(guò)自定義組件下的 getTabBar 接口,獲取當(dāng)前頁(yè)面的自定義 tabBar 組件實(shí)例。

顯而易見(jiàn),每當(dāng)切換 tab 頁(yè)時(shí),我們都需要更新 tabBar 的選中態(tài)。關(guān)于選中態(tài)的實(shí)現(xiàn),官方文檔描述如下:

注意:如需實(shí)現(xiàn) tab 選中態(tài),要在當(dāng)前頁(yè)面下,通過(guò) getTabBar 接口獲取組件實(shí)例,并調(diào)用 setData 更新選中態(tài)。

我們可以在使用到 tabBar 的頁(yè)面中這樣實(shí)現(xiàn):

Page({
 onShow: function () {
 if (typeof this.getTabBar === 'function' && this.getTabBar()) {
  this.getTabBar().setData({
  // 當(dāng)前頁(yè)面的 tabBar 索引
  active: 1
  })
 }
 }
})

至此,一個(gè)自定義 tabBar 的實(shí)現(xiàn)已全部完成。

踩坑

getTabBar() 方法缺失

在實(shí)現(xiàn) tabBar 選中態(tài)時(shí)遇到 getTabBar() 方法缺失的問(wèn)題。在小程序開(kāi)發(fā)工具中跳轉(zhuǎn)到 getTabBar() 方法的定義,我們可以看到:

/**
 * 返回當(dāng)前頁(yè)面的 custom-tab-bar 的組件實(shí)例
 *
 * 最低基礎(chǔ)庫(kù)版本:[`2.6.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html)
 **/
getTabBar(): TrivialInstance

該方法的最低基礎(chǔ)版本庫(kù)為 2.6.2,我們修改 project.config.json 文件中的 libVersion 字段,升級(jí)到指定版本庫(kù)即可。
升級(jí)版本庫(kù)后 tabBar 組件報(bào)錯(cuò)

報(bào)錯(cuò)內(nèi)容如下:

Component is not found in path "custom-tab-bar/index"

該原因是由于 tabBar 組件目錄放置錯(cuò)誤導(dǎo)致的,需要注意以下幾點(diǎn):

  1. 目錄需與 /pages 同級(jí)
  2. 目錄名稱(chēng)是 custom-tab-bar
  3. 目錄下所包含的文件名為 index.后綴
  4. 在 app.json 配置中,tabBar 下的 custom 字段需設(shè)置為 true

getTabBar() 始終返回 null

依舊是目錄放置與文件命名問(wèn)題,處理方法同上。

另外,不需要在 app.json 的 usingComponents 引入 tabBar 組件,如果你放置目錄與命名正確,小程序會(huì)自動(dòng)引入。

參考文檔

總結(jié)

到此這篇關(guān)于微信小程序自定義tabBar踩坑實(shí)踐記錄的文章就介紹到這了,更多相關(guān)微信小程序自定義tabBar踩坑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js 分欄效果實(shí)現(xiàn)代碼

    js 分欄效果實(shí)現(xiàn)代碼

    原創(chuàng)JS分欄效果,面向?qū)ο螅?使用簡(jiǎn)單。
    2009-08-08
  • JavaScript實(shí)現(xiàn)表單驗(yàn)證案例

    JavaScript實(shí)現(xiàn)表單驗(yàn)證案例

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)表單驗(yàn)證案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • JavaScript編寫(xiě)一個(gè)簡(jiǎn)易購(gòu)物車(chē)功能

    JavaScript編寫(xiě)一個(gè)簡(jiǎn)易購(gòu)物車(chē)功能

    這篇文章主要為大家詳細(xì)介紹了JavaScript簡(jiǎn)易購(gòu)物車(chē)功能的編寫(xiě)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • JS實(shí)現(xiàn)定時(shí)自動(dòng)關(guān)閉DIV層提示框的方法

    JS實(shí)現(xiàn)定時(shí)自動(dòng)關(guān)閉DIV層提示框的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)定時(shí)自動(dòng)關(guān)閉DIV層提示框的方法,可實(shí)現(xiàn)加載時(shí)載入js代碼控制div層提示框自動(dòng)關(guān)閉的效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • JavaScript人臉識(shí)別技術(shù)及臉部識(shí)別JavaScript類(lèi)庫(kù)Tracking.js

    JavaScript人臉識(shí)別技術(shù)及臉部識(shí)別JavaScript類(lèi)庫(kù)Tracking.js

    人臉識(shí)別的JavaScript程序包是Face Detection,它是由Jay Salvat和Liu Liu開(kāi)發(fā)的。它是一個(gè)標(biāo)準(zhǔn)的jQuery插件,通過(guò)對(duì)提供的圖片進(jìn)行分析,返回所有找到的臉部圖像的坐標(biāo),感興趣的朋友跟著小編一起學(xué)習(xí)js人臉識(shí)別技術(shù)及臉部識(shí)別JavaScript類(lèi)庫(kù)Tracking.js吧
    2015-09-09
  • 使用bootstrapValidator插件進(jìn)行動(dòng)態(tài)添加表單元素并校驗(yàn)

    使用bootstrapValidator插件進(jìn)行動(dòng)態(tài)添加表單元素并校驗(yàn)

    動(dòng)態(tài)添加表單元素,并調(diào)用bootstrapValidator的方法為表單添加校驗(yàn)規(guī)則,調(diào)用addField()方法實(shí)現(xiàn)功能。下面通過(guò)本文看下具體實(shí)現(xiàn)方法吧
    2016-09-09
  • javascript跨域原因以及解決方案分享

    javascript跨域原因以及解決方案分享

    這篇文章主要介紹了javascript跨域原因以及解決方案分享,十分的細(xì)致全面,有需要的小伙伴可以參考下。
    2015-04-04
  • 理解javascript async的用法

    理解javascript async的用法

    本篇文章主要介紹了理解javascript async的用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 如何在項(xiàng)目中使用log4.js的方法步驟

    如何在項(xiàng)目中使用log4.js的方法步驟

    這篇文章主要介紹了如何在項(xiàng)目中使用log4.js的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • uniapp自定義驗(yàn)證碼輸入框并隱藏光標(biāo)

    uniapp自定義驗(yàn)證碼輸入框并隱藏光標(biāo)

    這篇文章主要介紹了uniapp自定義驗(yàn)證碼輸入框隱藏光標(biāo),效果是點(diǎn)擊輸入框喚起鍵盤(pán),藍(lán)框就相當(dāng)于input的光標(biāo),驗(yàn)證碼輸入錯(cuò)誤或者不符合格式要求會(huì)將字體以及邊框改成紅色提示持續(xù)1s然后清空數(shù)據(jù),恢復(fù)原邊框樣式,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

长泰县| 五指山市| 阜南县| 莒南县| 沾化县| 连城县| 石泉县| 上蔡县| 聂拉木县| 龙口市| 敦煌市| 鹤庆县| 徐州市| 清丰县| 武定县| 台湾省| 天镇县| 盐边县| 清苑县| 阜阳市| 望奎县| 长沙市| 紫金县| 红河县| 绥阳县| 龙陵县| 皮山县| 中西区| 洪洞县| 枣强县| 香河县| 鲁甸县| 胶南市| 安徽省| 乌拉特中旗| 溧阳市| 景宁| 城市| 蒲江县| 通化县| 罗江县|