百度智能小程序 Component構造器

2020-09-05 15:07 更新

定義段與示例方法

解釋:

Component 構造器可用于定義組件,調用 Component 構造器時可以指定組件的屬性、數(shù)據(jù)、方法等。

字段類型是否必填描述最低版本
propertiesObject Map組件的對外屬性,是屬性名到屬性設置的映射表,屬性設置中可包含三個字段, type 表示屬性類型、 value 表示屬性初始值、 observer 表示屬性值被更改時的響應函數(shù)。
dataObject組件的內部數(shù)據(jù),和 properties 一同用于組件的模板渲染。
methodsObject組件的方法,包括事件響應函數(shù)和任意的自定義方法,關于事件響應函數(shù)的使用,參見組件事件。
behaviorsArray.<string>類似于 mixins 和 traits 的組件間代碼復用機制,參見 behaviors 。
createdFunction組件生命周期函數(shù),在組件實例進入頁面節(jié)點樹時執(zhí)行,注意此時不能調用 setData ,參見組件生命周期。
attachedFunction組件生命周期函數(shù),在組件實例進入頁面節(jié)點樹時執(zhí)行,參見組件生命周期
readyFunction組件生命周期函數(shù),在組件布局完成后執(zhí)行,此時可以獲取節(jié)點信息,參見組件生命周期
detachedFunction組件生命周期函數(shù),在組件實例被從頁面節(jié)點樹移除時執(zhí)行,參見組件生命周期。
externalClassesArray.<string>組件接受的外部樣式類,參見組件模板和樣式1.13.27
optionsObject Map一些選項(文檔中介紹相關特性時會涉及具體的選項設置,這里暫不列舉)1.13.27
lifetimesObject組件生命周期聲明對象,組件的生命周期: created 、 attached 、 ready 、 detached 將收歸到 lifetimes 字段內進行聲明,原有聲明方式仍舊有效,如同時存在兩種聲明方式,則 lifetimes 字段內聲明方式優(yōu)先級最高,參見組件生命周期。1.13.27
pageLifetimesObject組件所在頁面的生命周期聲明對象,目前僅支持頁面的 show 和 hide 兩個生命周期,參見組件生命周期。1.13.27
definitionFilterFunction定義段過濾器,用于自定義組件擴展,參見自定義組件擴展。1.13.27

生成的組件實例可以在組件的方法、生命周期函數(shù)和屬性 observer 中通過 this 訪問。組件包含一些通用屬性和方法。

屬性名類型描述最低版本
isString組件的文件路徑1.13.27
idString節(jié)點 id1.13.27
datasetString節(jié)點 dataset1.13.27
dataObject組件數(shù)據(jù),包括內部數(shù)據(jù)和屬性值。
propertiesObject組件數(shù)據(jù),包括內部數(shù)據(jù)和屬性值(與 data 一致)。
方法名參數(shù)描述最低版本
setDataObject newData設置 data 并執(zhí)行視圖層渲染
hasBehaviorObject檢查組件是否具有 behavior (檢查時會遞歸檢查被直接或間接引入的所有 behavior)1.13.27
triggerEventString name, Object detail觸發(fā)事件,參見組件事件。
createSelectorQuery創(chuàng)建一個 SelectorQuery 對象,選擇器選取范圍為這個組件實例內,與 swan.createSelectorQuery().in(this) 是等效。2.5.3
createIntersectionObserverObject options創(chuàng)建一個 IntersectionObserver 對象,選擇器選取范圍為這個組件實例內。2.5.3
selectComponentString selector使用選擇器選擇組件實例節(jié)點,返回匹配到的第一個組件實例對象(會被 swan://component-export 影響),在生命周期 onReay 開始時生效。
selectAllComponentsString selector使用選擇器選擇組件實例節(jié)點,返回匹配到的全部組件實例對象組成的數(shù)組。
groupSetDataFunction 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 構造器構造頁面

解釋:

事實上,一個自定義組件也可以視為一個頁面,故頁面也可以使用 Component 構造器構造,擁有與普通組件一樣的定義段與實例方法,其必要配置項( json )與正常自定義組件一致,即需要有 component: true 字段。

關于頁面?zhèn)鲄ⅲ?/p>

從其它頁面跳轉到由自定義組件構造的頁面時,如跳轉到頁面 /components/custom/custom?paramA=123&paramB=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: { /* ... */ },
})

說明:

  • 使用 this.data 可以獲取內部數(shù)據(jù)和屬性值,但不要直接修改它們,應使用 setData 修改;
  • 屬性名應避免以 data- 開頭,因為在 SWAN 中,data-name='swan'會被作為節(jié)點 dataset 來處理;
  • 屬性名應避免以 prop- 開頭 在處理過程中會將該前綴刪除;
  • 屬性名應避免包含 “ _ ” 字符,因為在渲染過程中將會以 “ _ ” 字符進行拆分。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號