W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
開發(fā)者可以將頁面內(nèi)的功能模塊抽象成自定義組件,以便在不同的頁面中重復(fù)使用;也可以將復(fù)雜的頁面拆分成多個低耦合的模塊,有助于代碼維護。自定義組件在使用時與基礎(chǔ)組件非常相似。
類似于頁面,一個自定義組件由 json
qml
qss
js
4個文件組成。要編寫一個自定義組件,首先需要在 json 文件中進行自定義組件聲明(將 component 字段設(shè)為 true 可這一組文件設(shè)為自定義組件):
{
"component": true
}
同時,還要在 qml
文件中編寫組件模板,在 qss
文件中加入組件樣式,它們的寫法與頁面的寫法類似。具體細節(jié)和注意事項參見 組件模板和樣式 。
代碼示例:
<!-- 這是自定義組件的內(nèi)部QML結(jié)構(gòu) -->
<view class="inner">
{{innerText}}
</view>
<slot></slot>
/* 這里的樣式只應(yīng)用于這個自定義組件 */
.inner {
color: red;
}
注意:在組件qss中不應(yīng)使用ID選擇器、屬性選擇器和標簽名選擇器。
在自定義組件的 js 文件中,需要使用 Component() 來注冊組件,并提供組件的屬性定義、內(nèi)部數(shù)據(jù)和自定義方法。 組件的屬性值和內(nèi)部數(shù)據(jù)將被用于組件 qml 的渲染,其中,屬性值是可由組件外部傳入的。更多細節(jié)參見 Component構(gòu)造器 。
代碼示例:
Component({
properties: {
// 這里定義了innerText屬性,屬性值可以在組件使用時指定
innerText: {
type: String,
value: 'default value',
}
},
data: {
// 這里是一些組件內(nèi)部數(shù)據(jù)
someData: {}
},
methods: {
// 這里是一個自定義方法
customMethod() {}
}
})
使用自定義組件 使用已注冊的自定義組件前,首先要在頁面的 json 文件中進行引用聲明。此時需要提供每個自定義組件的標簽名和對應(yīng)的自定義組件文件路徑:
{
"usingComponents": {
"component-tag-name": "path/to/the/custom/component"
}
}
這樣,在頁面的 qml 中就可以像使用基礎(chǔ)組件一樣使用自定義組件。節(jié)點名即自定義組件的標簽名,節(jié)點屬性即傳遞給組件的屬性值。 在 app.json 中聲明 usingComponents 字段,在此處聲明的自定義組件視為全局自定義組件,在小程序內(nèi)的頁面或自定義組件中可以直接使用而無需再聲明。
<view>
<!-- 以下是對一個自定義組件的引用 -->
<component-tag-name inner-text="Some text"></component-tag-name>
</view>
自定義組件的 qml 節(jié)點結(jié)構(gòu)在與數(shù)據(jù)結(jié)合之后,將被插入到引用位置內(nèi)。
一些需要注意的細節(jié):
注意,是否在頁面文件中使用 usingComponents 會使得頁面的 this 對象的原型稍有差異,包括: 使用 usingComponents 頁面的原型與不使用時不一致,即 Object.getPrototypeOf(this) 結(jié)果不同。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: