W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
創(chuàng)建自定義組件,接受一個 Object 類型的參數(shù)。
定義段 | 類型 | 是否必填 | 描述 | 最低版本 |
---|---|---|---|---|
properties | Object Map | 否 | 組件的對外屬性,是屬性名到屬性設(shè)置的映射表 | |
data | Object | 否 | 組件的內(nèi)部數(shù)據(jù),和 properties 一同用于組件的模板渲染 |
|
observers | Object | 否 | 組件數(shù)據(jù)字段監(jiān)聽器,用于監(jiān)聽 properties 和 data 的變化,參見 數(shù)據(jù)監(jiān)聽器 | 2.6.1 |
methods | Object | 否 | 組件的方法,包括事件響應(yīng)函數(shù)和任意的自定義方法,關(guān)于事件響應(yīng)函數(shù)的使用,參見 組件間通信與事件 | |
behaviors | String Array | 否 | 類似于mixins和traits的組件間代碼復(fù)用機(jī)制,參見 behaviors | |
created | Function | 否 | 組件生命周期函數(shù)-在組件實(shí)例剛剛被創(chuàng)建時執(zhí)行,注意此時不能調(diào)用 setData ) |
|
attached | Function | 否 | 組件生命周期函數(shù)-在組件實(shí)例進(jìn)入頁面節(jié)點(diǎn)樹時執(zhí)行) | |
ready | Function | 否 | 組件生命周期函數(shù)-在組件布局完成后執(zhí)行) | |
moved | Function | 否 | 組件生命周期函數(shù)-在組件實(shí)例被移動到節(jié)點(diǎn)樹另一個位置時執(zhí)行) | |
detached | Function | 否 | 組件生命周期函數(shù)-在組件實(shí)例被從頁面節(jié)點(diǎn)樹移除時執(zhí)行) | |
relations | Object | 否 | 組件間關(guān)系定義,參見 組件間關(guān)系 | |
externalClasses | String Array | 否 | 組件接受的外部樣式類,參見 外部樣式類 | |
options | Object Map | 否 | 一些選項(xiàng)(文檔中介紹相關(guān)特性時會涉及具體的選項(xiàng)設(shè)置,這里暫不列舉) | |
lifetimes | Object | 否 | 組件生命周期聲明對象,參見 組件生命周期 | 2.2.3 |
pageLifetimes | Object | 否 | 組件所在頁面的生命周期聲明對象,參見 組件生命周期 | 2.2.3 |
definitionFilter | Function | 否 | 定義段過濾器,用于自定義組件擴(kuò)展,參見 自定義組件擴(kuò)展 | 2.2.3 |
生成的組件實(shí)例可以在組件的方法、生命周期函數(shù)和屬性 observer 中通過 this 訪問。組件包含一些通用屬性和方法。
屬性名 | 類型 | 描述 |
---|---|---|
is | String | 組件的文件路徑 |
id | String | 節(jié)點(diǎn)id |
dataset | String | 節(jié)點(diǎn)dataset |
data | Object | 組件數(shù)據(jù),包括內(nèi)部數(shù)據(jù)和屬性值 |
properties | Object | 組件數(shù)據(jù),包括內(nèi)部數(shù)據(jù)和屬性值(與 data 一致) |
方法名 | 參數(shù) | 描述 | 最低版本 |
---|---|---|---|
setData | Object newData
|
設(shè)置data并執(zhí)行視圖層渲染 | |
hasBehavior | Object behavior
|
檢查組件是否具有 behavior (檢查時會遞歸檢查被直接或間接引入的所有behavior) |
|
triggerEvent | String name , Object detail , Object options
|
觸發(fā)事件,參見 組件間通信與事件 | |
createSelectorQuery | 創(chuàng)建一個 SelectorQuery 對象,選擇器選取范圍為這個組件實(shí)例內(nèi) | ||
createIntersectionObserver | 創(chuàng)建一個 IntersectionObserver 對象,選擇器選取范圍為這個組件實(shí)例內(nèi) | ||
createMediaQueryObserver | 創(chuàng)建一個 MediaQueryObserver 對象 | 2.11.1 | |
selectComponent | String selector
|
使用選擇器選擇組件實(shí)例節(jié)點(diǎn),返回匹配到的第一個組件實(shí)例對象(會被 wx://component-export 影響) |
|
selectAllComponents | String selector
|
使用選擇器選擇組件實(shí)例節(jié)點(diǎn),返回匹配到的全部組件實(shí)例對象組成的數(shù)組(會被 wx://component-export 影響) |
|
selectOwnerComponent | 選取當(dāng)前組件節(jié)點(diǎn)所在的組件實(shí)例(即組件的引用者),返回它的組件實(shí)例對象(會被 wx://component-export 影響) |
2.8.2 | |
getRelationNodes | String relationKey
|
獲取這個關(guān)系所對應(yīng)的所有關(guān)聯(lián)節(jié)點(diǎn),參見 組件間關(guān)系 | |
groupSetData | Function callback
|
立刻執(zhí)行 callback ,其中的多個 setData 之間不會觸發(fā)界面繪制(只有某些特殊場景中需要,如用于在不同組件同時 setData 時進(jìn)行界面繪制同步) |
2.4.0 |
getTabBar | 返回當(dāng)前頁面的 custom-tab-bar 的組件實(shí)例,詳見自定義 tabBar | 2.6.2 | |
getPageId | 返回頁面標(biāo)識符(一個字符串),可以用來判斷幾個自定義組件實(shí)例是不是在同一個頁面內(nèi) | 2.7.1 | |
animate | String selector , Array keyframes , Number duration , Function callback
|
執(zhí)行關(guān)鍵幀動畫,詳見動畫 | 2.9.0 |
clearAnimation | String selector , Object options , Function callback
|
清除關(guān)鍵幀動畫,詳見動畫 | 2.9.0 |
代碼示例:
在開發(fā)者工具中預(yù)覽效果
Component({
behaviors: [],
// 屬性定義(詳情參見下文)
properties: {
myProperty: { // 屬性名
type: String,
value: ''
},
myProperty2: String // 簡化的定義方式
},
data: {}, // 私有數(shù)據(jù),可用于模板渲染
lifetimes: {
// 生命周期函數(shù),可以為函數(shù),或一個在methods段中定義的方法名
attached: function () { },
moved: function () { },
detached: function () { },
},
// 生命周期函數(shù),可以為函數(shù),或一個在methods段中定義的方法名
attached: function () { }, // 此處attached的聲明會被lifetimes字段中的聲明覆蓋
ready: function() { },
pageLifetimes: {
// 組件所在頁面的生命周期函數(shù)
show: function () { },
hide: function () { },
resize: function () { },
},
methods: {
onMyButtonTap: function(){
this.setData({
// 更新屬性和數(shù)據(jù)的方法與更新頁面數(shù)據(jù)的方法類似
})
},
// 內(nèi)部方法建議以下劃線開頭
_myPrivateMethod: function(){
// 這里將 data.A[0].B 設(shè)為 'myPrivateData'
this.setData({
'A[0].B': 'myPrivateData'
})
},
_propertyChange: function(newVal, oldVal) {
}
}
})
注意:在 properties 定義段中,屬性名采用駝峰寫法(propertyName);在 wxml 中,指定屬性值時則對應(yīng)使用連字符寫法(component-tag-name property-name="attr value"),應(yīng)用于數(shù)據(jù)綁定時采用駝峰寫法(attr="")。
定義段 | 類型 | 是否必填 | 描述 | 最低版本 |
---|---|---|---|---|
type | 是 | 屬性的類型 | ||
optionalTypes | Array | 否 | 屬性的類型(可以指定多個) | 2.6.5 |
value | 否 | 屬性的初始值 | ||
observer | Function | 否 | 屬性值變化時的回調(diào)函數(shù) |
屬性值的改變情況可以使用 observer 來監(jiān)聽。目前,在新版本基礎(chǔ)庫中不推薦使用這個字段,而是使用 Component 構(gòu)造器的 observers 字段代替,它更加強(qiáng)大且性能更好。
代碼示例:
Component({
properties: {
min: {
type: Number,
value: 0
},
min: {
type: Number,
value: 0,
observer: function(newVal, oldVal) {
// 屬性值變化時執(zhí)行
}
},
lastLeaf: {
// 這個屬性可以是 Number 、 String 、 Boolean 三種類型中的一種
type: Number,
optionalTypes: [String, Object],
value: 0
}
}
})
屬性的類型可以為 String Number Boolean Object Array 其一,也可以為 null 表示不限制類型。
多數(shù)情況下,屬性最好指定一個確切的類型。這樣,在 WXML 中以字面量指定屬性值時,值可以獲得一個確切的類型,如:
<custom-comp min="1" max="5" />
此時,由于自定義組件的對應(yīng)屬性被規(guī)定為 Number 類型, min 和 max 會被賦值為 1 和 5 ,而非 "1" 和 "5" ,即:
this.data.min === 1 // true
this.data.max === 5 // true
注冊一個 behavior,接受一個 Object 類型的參數(shù)。
定義段 | 類型 | 是否必填 | 描述 | 最低版本 |
---|---|---|---|---|
properties | Object Map | 否 | 同組件的屬性 | |
data | Object | 否 | 同組件的數(shù)據(jù) | |
methods | Object | 否 | 同自定義組件的方法 | |
behaviors | String Array | 否 | 引入其它的 behavior
|
|
created | Function | 否 | 生命周期函數(shù) | |
attached | Function | 否 | 生命周期函數(shù) | |
ready | Function | 否 | 生命周期函數(shù) | |
moved | Function | 否 | 生命周期函數(shù) | |
detached | Function | 否 | 生命周期函數(shù) |
代碼示例:
// my-behavior.js
module.exports = Behavior({
behaviors: [],
properties: {
myBehaviorProperty: {
type: String
}
},
data: {
myBehaviorData: {}
},
attached: function(){},
methods: {
myBehaviorMethod: function(){}
}
})
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: