W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
解釋:
Component 構造器可用于定義組件,調用 Component 構造器時可以指定組件的屬性、數(shù)據(jù)、方法等。
字段 | 類型 | 是否必填 | 描述 | 最低版本 |
---|---|---|---|---|
properties | Object Map | 否 | 組件的對外屬性,是屬性名到屬性設置的映射表,屬性設置中可包含三個字段, type 表示屬性類型、 value 表示屬性初始值、 observer 表示屬性值被更改時的響應函數(shù)。 | |
data | Object | 否 | 組件的內部數(shù)據(jù),和 properties 一同用于組件的模板渲染。 | |
methods | Object | 否 | 組件的方法,包括事件響應函數(shù)和任意的自定義方法,關于事件響應函數(shù)的使用,參見組件事件。 | |
behaviors | Array.<string> | 否 | 類似于 mixins 和 traits 的組件間代碼復用機制,參見 behaviors 。 | |
created | Function | 否 | 組件生命周期函數(shù),在組件實例進入頁面節(jié)點樹時執(zhí)行,注意此時不能調用 setData ,參見組件生命周期。 | |
attached | Function | 否 | 組件生命周期函數(shù),在組件實例進入頁面節(jié)點樹時執(zhí)行,參見組件生命周期。 | |
ready | Function | 否 | 組件生命周期函數(shù),在組件布局完成后執(zhí)行,此時可以獲取節(jié)點信息,參見組件生命周期。 | |
detached | Function | 否 | 組件生命周期函數(shù),在組件實例被從頁面節(jié)點樹移除時執(zhí)行,參見組件生命周期。 | |
externalClasses | Array.<string> | 否 | 組件接受的外部樣式類,參見組件模板和樣式。 | 1.13.27 |
options | Object Map | 否 | 一些選項(文檔中介紹相關特性時會涉及具體的選項設置,這里暫不列舉) | 1.13.27 |
lifetimes | Object | 否 | 組件生命周期聲明對象,組件的生命周期: created 、 attached 、 ready 、 detached 將收歸到 lifetimes 字段內進行聲明,原有聲明方式仍舊有效,如同時存在兩種聲明方式,則 lifetimes 字段內聲明方式優(yōu)先級最高,參見組件生命周期。 | 1.13.27 |
pageLifetimes | Object | 否 | 組件所在頁面的生命周期聲明對象,目前僅支持頁面的 show 和 hide 兩個生命周期,參見組件生命周期。 | 1.13.27 |
definitionFilter | Function | 否 | 定義段過濾器,用于自定義組件擴展,參見自定義組件擴展。 | 1.13.27 |
生成的組件實例可以在組件的方法、生命周期函數(shù)和屬性 observer 中通過 this 訪問。組件包含一些通用屬性和方法。
屬性名 | 類型 | 描述 | 最低版本 |
---|---|---|---|
is | String | 組件的文件路徑 | 1.13.27 |
id | String | 節(jié)點 id | 1.13.27 |
dataset | String | 節(jié)點 dataset | 1.13.27 |
data | Object | 組件數(shù)據(jù),包括內部數(shù)據(jù)和屬性值。 | |
properties | Object | 組件數(shù)據(jù),包括內部數(shù)據(jù)和屬性值(與 data 一致)。 |
方法名 | 參數(shù) | 描述 | 最低版本 |
---|---|---|---|
setData | Object newData | 設置 data 并執(zhí)行視圖層渲染 | |
hasBehavior | Object | 檢查組件是否具有 behavior (檢查時會遞歸檢查被直接或間接引入的所有 behavior) | 1.13.27 |
triggerEvent | String name, Object detail | 觸發(fā)事件,參見組件事件。 | |
createSelectorQuery | 創(chuàng)建一個 SelectorQuery 對象,選擇器選取范圍為這個組件實例內,與 swan.createSelectorQuery().in(this) 是等效。 | 2.5.3 | |
createIntersectionObserver | Object options | 創(chuàng)建一個 IntersectionObserver 對象,選擇器選取范圍為這個組件實例內。 | 2.5.3 |
selectComponent | String selector | 使用選擇器選擇組件實例節(jié)點,返回匹配到的第一個組件實例對象(會被 swan://component-export 影響),在生命周期 onReay 開始時生效。 | |
selectAllComponents | String selector | 使用選擇器選擇組件實例節(jié)點,返回匹配到的全部組件實例對象組成的數(shù)組。 | |
groupSetData | Function callback | 立刻執(zhí)行 callback ,其中的多個 setData 之間不會觸發(fā)界面進行重復繪制。 | 2.10.7 |
代碼示例
在開發(fā)者工具中打開// 自定義組件js
Component({
properties: {
propName: { // 屬性名
type: String, // 類型(必填),目前接受的類型包括:String, Number, Boolean, Object, Array, null(表示任意類型)
value: 'val', // 屬性初始值(必填)
observer: function(newVal, oldVal) {
// 屬性被改變時執(zhí)行的函數(shù)(可選)
}
}
},
data: {}, // 私有數(shù)據(jù),可用于模板渲染
// 生命周期函數(shù),可以為函數(shù),或一個在methods段中定義的方法名
attached: function () {},
detached: function () {},
methods: {
onTap: function () {
this.setData({
// 更新屬性和數(shù)據(jù)的方法與更新頁面數(shù)據(jù)的方法類似
});
}
}
});
注意:在 properties 定義段中,屬性名應該采用駝峰寫法(propsName);在 swan 模板中,指定屬性值時則對應使用連字符寫法( component-tag-name props-name="props value" )。
解釋:
事實上,一個自定義組件也可以視為一個頁面,故頁面也可以使用 Component 構造器構造,擁有與普通組件一樣的定義段與實例方法,其必要配置項( json )與正常自定義組件一致,即需要有 component: true 字段。
關于頁面?zhèn)鲄ⅲ?/p>
從其它頁面跳轉到由自定義組件構造的頁面時,如跳轉到頁面 /components/custom/custom?paramA=123¶mB=xyz ,你可以在由 custom 組件構造的頁面 onLoad 生命周期中獲取傳遞的 query 字段。
注意:
頁面的生命周期方法(即 on 開頭的方法),應寫在 methods 定義段中。
代碼示例
{
"component": true,
"usingComponents": {}
}
/* /components/custom/custom.js */
Component({
methods: {
onLoad: function(options) {
console.log(options.paramA); // 123
console.log(options.paramB); // xyz
}
}
});
使用 Component 構造器來構造頁面的一個好處是可以使用 behaviors 來提取所有頁面中公用的代碼段。例如,在所有頁面被創(chuàng)建和銷毀時都要執(zhí)行同一段代碼,就可以把這段代碼提取到 behaviors 中。
代碼示例
在開發(fā)者工具中打開// behavior.js
module.exports = Behavior({
attached: function() {
// 頁面創(chuàng)建時執(zhí)行
console.info('Page loaded!')
},
detached: function() {
// 頁面銷毀時執(zhí)行
console.info('Page unloaded!')
}
})
// 自定義組件 A
var pageCommonBehavior = require('../behavior.js')
Component({
behaviors: [pageCommonBehavior],
data: { /* ... */ },
methods: { /* ... */ },
})
// 自定義組件 B
var pageCommonBehavior = require('../behavior.js')
Component({
behaviors: [pageCommonBehavior],
data: { /* ... */ },
methods: { /* ... */ },
})
說明:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: