什么是behaviors?下面本篇文章帶大家了解一下小程序中自定義組件的 behaviors,介紹一下創(chuàng)建behaviors,并導(dǎo)入與使用的方法,希望對(duì)大家有所幫助!
什么是 behaviors
behaviors 是小程序中用于實(shí)現(xiàn)組件代碼共享的特性,作用類(lèi)似 Vue.js 中的 mixins。比如在多個(gè)組件中,有一部分代碼是完全一樣的,我們沒(méi)有必要每個(gè)組件寫(xiě)一遍,為了方便,我們可以把這部分代碼封裝出來(lái),放在 behaviors 中進(jìn)行共享,誰(shuí)用到這部分代碼,直接引用就可以生效
behaviors 的工作方式
- 在小程序中,每個(gè) behaviors 都可以包含一組屬性、數(shù)據(jù)、生命周期和方法。組件引用它時(shí),它的屬性、數(shù)據(jù)和方法會(huì)被合并到組件中。
- 每個(gè)組件中可以引用多個(gè) behaviors ,每個(gè) behaviors 之間也可以相互引用
behaviors 的創(chuàng)建
調(diào)用 behaviors(Object Object)
方法就可以創(chuàng)建一個(gè)共享的 behaviors 實(shí)例對(duì)象,供所有的組件使用
//使用 module.exports 將 behavior 實(shí)例對(duì)象共享出去 module.exports = Behavior({ //私有數(shù)據(jù)節(jié)點(diǎn) data: { }, //屬性節(jié)點(diǎn) properties: { }, //事件處理 methods: { } })
behaviors 的導(dǎo)入與使用
在組件中,使用 require()
方法導(dǎo)入需要的 behaviors,掛載后即可訪(fǎng)問(wèn) behaviors 中的數(shù)據(jù)或方法
//1.使用 `require()` 導(dǎo)入需要的自定義 behaviors 模塊 const myBehaviors = require("../../behaviors/behaviors") Component({ //2. 將導(dǎo)入的 behaviors 實(shí)例對(duì)象,掛載到 behaviors數(shù)組的節(jié)點(diǎn)中便可以使用 behaviors: [myBehaviors], properties: { //... } //其他代碼... })
behaviors 中所有可用的節(jié)點(diǎn)
比較常用的有 properties
、data
、methods
、behaviors
可用的節(jié)點(diǎn) | 類(lèi)型 | 是否必填 | 描述 |
---|---|---|---|
properties | Object Map | 否 | 同組件的屬性 |
data | Object | 否 | 同組件的數(shù)據(jù) |
methods | Object | 否 | 同自定義組件的方法 |
behaviors | Sting Array | 否 | 引用其它的 behaviors |
created | Function | 否 | 生命周期函數(shù) |
attached | Function | 否 | 生命周期函數(shù) |
ready | Function | 否 | 生命周期函數(shù) |
moved | Function | 否 | 生命周期函數(shù) |
detached | Function | 否 | 生命周期函數(shù) |
同名字段的覆蓋和組合規(guī)則
組件和它引用的 behaviors 中可以包含同名的字段,此時(shí)可以參考以下三種同名的處理規(guī)則
-
同名的數(shù)據(jù)字段 (
data
)- 若同名的數(shù)據(jù)字段都是對(duì)象類(lèi)型,會(huì)進(jìn)行對(duì)象合并
- 其余情況會(huì)進(jìn)行數(shù)據(jù)覆蓋,覆蓋規(guī)則: 組件 > 父 behaviors > 子 behaviors 、靠后的 behaviors > 靠前的 behaviors(優(yōu)先級(jí)高的覆蓋優(yōu)先級(jí)低的,最大的優(yōu)先級(jí)最高)
-
同名的屬性(
properties
)或方法(methods
)- 若組件本身有這個(gè)屬性或方法,則組件的屬性或方法會(huì)覆蓋 behaviors 中的同名屬性或方法
- 若組件本身無(wú)這個(gè)屬性或方法,則在組件的 behaviors 字段中定義靠后的 behaviors 的屬性或方法會(huì)覆蓋靠前的同名屬性或方法
- 在上一條基礎(chǔ)上,若存在嵌套引用 behaviors 的情況,規(guī)則是:父 behaviors 覆蓋 子 behaviors中同名的屬性或方法
-
同名的生命周期函數(shù)
- 對(duì)于不同生命周期函數(shù)之間,遵循組件生命周期函數(shù)的順序
- 對(duì)于同種生命周期函數(shù),遵循如下規(guī)則
- behaviors 優(yōu)先于組件執(zhí)行
- 子 behaviors 優(yōu)先于父 behaviors執(zhí)行
- 靠前的 behaviors 優(yōu)先于靠后的 behaviors 執(zhí)行
- 如果同一個(gè) behaviors 被一個(gè)組件多次引用,它會(huì)定義生命周期函數(shù)只會(huì)被執(zhí)行一次
【相關(guān)學(xué)習(xí)推薦:小程序開(kāi)發(fā)教程】