W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Component 構(gòu)造器可用于定義組件,調(diào)用 Component 構(gòu)造器時(shí)可以指定組件的屬性、數(shù)據(jù)、方法等
選項(xiàng)名 | 類型 | 是否必填 | 說(shuō)明 | 最低版本 |
---|---|---|---|---|
properties | Object | 否 | 組件的對(duì)外屬性,是屬性名到屬性設(shè)置的映射表,屬性設(shè)置中可包含三個(gè)字段,type 表示屬性類型、value 表示屬性初始值、observer 表示屬性值被更改時(shí)的響應(yīng)函數(shù) | |
data | Object | 否 | 組件的內(nèi)部數(shù)據(jù),和 properties 一同用于組件的模版渲染 | |
methods | Object | 否 | 組件的方法,包括事件響應(yīng)函數(shù)和任意的自定義方法,關(guān)于事件響應(yīng)函數(shù)的使用,參見(jiàn)組件事件 | |
behaviors | String/Array | 否 | 類似于 mixins | |
created | Function | 否 | 組件生命周期函數(shù),在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)時(shí)執(zhí)行,注意此時(shí)不能調(diào)用setData | |
attached | Function | 否 | 組件生命周期函數(shù),在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹(shù)時(shí)執(zhí)行 | |
ready | Function | 否 | 組件生命周期函數(shù),在組件布局完成后執(zhí)行 | |
moved | Function | 否 | 組件生命周期函數(shù),在組件實(shí)例被移動(dòng)到節(jié)點(diǎn)樹(shù)另一個(gè)位置時(shí)執(zhí)行 | |
detached | Function | 否 | 組件生命周期函數(shù),在組件實(shí)例被從頁(yè)面節(jié)點(diǎn)樹(shù)移除時(shí)執(zhí)行 | |
relations | Object | 否 | 組件間的關(guān)系定義,參加組件間關(guān)系 | 1.12.0.0 |
options | Object | 否 | 其他選項(xiàng) | |
lifetimes | Object | 否 | 組件生命周期聲明對(duì)象,優(yōu)先級(jí)比同級(jí)的 attached、detached 等生命周期優(yōu)先級(jí)高 | |
definitionFilter | Function | 否 | 定義過(guò)濾器,用于自定義組件擴(kuò)展,參見(jiàn)自定義組件擴(kuò)展 |
生成的組件實(shí)例可以在組件的方法、生命周期函數(shù)和屬性 observer 中通過(guò) this 訪問(wèn)。組件包含一些通用屬性和方法。
通用屬性列表
屬性名 | 類型 | 說(shuō)明 |
---|---|---|
is | String | 組件的文件路徑 |
id | String | 節(jié)點(diǎn) id |
dataset | String | 節(jié)點(diǎn) dataset |
data | Object | 組件數(shù)據(jù) |
properties | Object | 組件數(shù)據(jù) |
方法列表
方法名 | 參數(shù)及其類型 | 說(shuō)明 | 最低版本 |
---|---|---|---|
setData | Object data | 設(shè)置 data | |
hasBehavior | Object behavior | 檢查組件是否具有 behavior | |
triggerEvent | String eventName , Object detail , Object options | 觸發(fā)事件 | |
selectComponent | String selector , Function callback | 使用選擇器選擇組件實(shí)例節(jié)點(diǎn),返回匹配到的第一個(gè)組件實(shí)例對(duì)象,此方法為異步方法,返回值會(huì)在請(qǐng)求完成后傳入 callback | |
selectAllComponents | String selector , Function callback | 使用選擇器選擇組件實(shí)例節(jié)點(diǎn),返回匹配到的全部組件實(shí)例對(duì)象組成的數(shù)組,此方法為異步方法,返回值會(huì)在請(qǐng)求完成后傳入 callback | |
getRelationNodes | String relationKey , Function callback | 獲取這個(gè)關(guān)系所對(duì)應(yīng)的所有關(guān)聯(lián)節(jié)點(diǎn),參見(jiàn) 組件間關(guān)系。 此方法為異步方法,返回值會(huì)在請(qǐng)求完成后傳入 callback | 1.12.0.0 |
提示selectComponent、selectAllComponents、getRelationNodes API 均為異步 API,需要指定回調(diào)函數(shù)。
提示selectComponent、selectAllComponents 在 1.16.2.0 版本后支持同步寫法。開(kāi)發(fā)者需要保證在調(diào)用 API 時(shí),頁(yè)面已經(jīng)渲染完畢,比如頁(yè)面的 onReady、setData 的回調(diào)之后。
代碼示例
Component({
behaviors: [],
properties: {
myProperty: {
// 類型(必填),目前接受的類型包括:String, Number, Boolean, Object, Array, null(表示任意類型)
type: String,
// 屬性初始值(可選),如果未指定則會(huì)根據(jù)類型選擇一個(gè)
value: '',
// 屬性被改變時(shí)執(zhí)行的函數(shù)(可選),也可以寫成在 methods 段中定義的方法名字符串, 如:'_propertyChange'
observer: function(newVal, oldVal, changedPath) {
// 通常 newVal 就是新設(shè)置的數(shù)據(jù), oldVal 是舊數(shù)據(jù)
}
},
myPropertyB: String // 簡(jiǎn)化的定義方式
},
// 私有數(shù)據(jù),可用于模版渲染
data: {},
// 生命周期函數(shù),可以為函數(shù),或一個(gè)在 methods 段中定義的方法名
attached: function () {
this.selectComponent('.class-name', function(res) {
console.log(res)
})
//
},
ready: function() { },
// 組件自定義方法
methods: {
onMyButtonTap: function(){
this.setData({ ... })
},
_myPrivateMethod: function(){
// 這里將 data.A[0].B 設(shè)為 'test'
this.setData({
'A[0].B': 'test'
})
},
_propertyChange: function(newVal, oldVal) {
}
}
})
注意:在 properties 定義中,屬性名采用駝峰寫法(propertyName);在 ttml/wxml 中,指定屬性值時(shí)則對(duì)應(yīng)使用連字符寫法(my-component property-name="value"),應(yīng)用于數(shù)據(jù)綁定時(shí)采用駝峰寫法(attr="{{propertyName}}")。
小程序的頁(yè)面也可以視為自定義組件。因而,頁(yè)面也可以使用 Component 構(gòu)造器構(gòu)造,擁有與普通組件一樣的定義與實(shí)例方法。但此時(shí)要求對(duì)應(yīng) json 文件中包含 usingComponents 定義段。
此時(shí),組件的屬性可以用于接收頁(yè)面的參數(shù),如訪問(wèn)頁(yè)面 /pages/index/index?paramA=123?mB=xyz ,如果聲明有屬性 paramA 或 paramB,則它們會(huì)被賦值為 123 或 xyz 。
代碼示例
{
"usingComponents": {}
}
在組件代碼中
Component({
properties: {
paramA: Number,
paramB: String
},
methods: {
onLoad() {
this.data.paramA; // 頁(yè)面參數(shù) paramA 的值
this.data.paramB; // 頁(yè)面參數(shù) paramB 的值
}
}
});
注意:此功能正在逐步支持中,可能會(huì)存在不符合預(yù)期的問(wèn)題
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: