微信小程序實現(xiàn)自定義組件的創(chuàng)建和使用(一)

從小程序基礎庫版本 1.6.3 開始盔沫,小程序支持簡潔的組件化編程。所有自定義組件相關特性都需要基礎庫版本 1.6.3 或更高。

開發(fā)者可以將頁面內的功能模塊抽象成自定義組件冰沙,以便在不同的頁面中重復使用;也可以將復雜的頁面拆分成多個低耦合的模塊执虹,有助于代碼維護拓挥。自定義組件在使用時與基礎組件非常相似。

如何創(chuàng)建和使用自定義組件呢袋励?

創(chuàng)建自定義組件:類似于頁面侥啤,一個自定義組件由 json, wxml茬故, wxss盖灸, js 4個文件組成。

1.要編寫一個自定義組件磺芭,首先需要在 json 文件中進行自定義組件聲明(將 component 字段設為 true 可將這一組文件設為自定義組件):

{
  "component": true
}

2.在 wxml 文件中編寫組件模板

<view class="inner">
  {{innerText}}
</view>
<slot></slot>

3.在 wxss 文件中加入組件樣式赁炎,它們的寫法與頁面的寫法類似。

.inner {
  color: red;
}

注意:在組件wxss中不應使用ID選擇器徘跪、屬性選擇器和標簽名選擇器甘邀。
4.組件的js文件,需要使用 Component() 來注冊組件垮庐,并提供組件的屬性定義松邪、內部數(shù)據(jù)和自定義方法。

Component({
  properties: {
    // 這里定義了innerText屬性哨查,屬性值可以在組件使用時指定
    innerText: {
      type: String,
      value: 'default value',
    }
  },
  data: {
    // 這里是一些組件內部數(shù)據(jù)
    someData: {}
  },
  methods: {
    // 這里是一個自定義方法
    customMethod: function(){}
  }
})

4.使用自定義組件
首先要在需要引用組件的頁面的 json 文件中進行引用聲明逗抑。此時需要提供每個自定義組件的標簽名和對應的自定義組件文件路徑:

{
  "usingComponents": {
 // 組件名字:組件文件路徑
    "component-name": "subpage1"
  }
}

5.在頁面中引用組件

<view>
  <text>組件頁面</text>
  <!-- 以下是對一個自定義組件的引用 -->
  <component-name inner-text="我是子組件">
    <view>這里是插入到組件slot中的內容</view>
  </component-name>
</view>

效果圖:


圖片.png

注意事項
一些需要注意的細節(jié):
因為 WXML 節(jié)點標簽名只能是小寫字母、中劃線和下劃線的組合寒亥,所以自定義組件的標簽名也只能包含這些字符邮府。
自定義組件也是可以引用自定義組件的,引用方法類似于頁面引用自定義組件的方式(使用 usingComponents 字段)溉奕。
自定義組件和頁面所在項目根目錄名不能以“wx-”為前綴褂傀,否則會報錯。
注意加勤,是否在頁面文件中使用 usingComponents 會使得頁面的 this 對象的原型稍有差異仙辟,包括:
使用 usingComponents 頁面的原型與不使用時不一致同波,即 Object.getPrototypeOf(this) 結果不同。
使用 usingComponents 時會多一些方法叠国,如 selectComponent 未檩。
出于性能考慮,使用 usingComponents 時粟焊, setData 內容不會被直接深復制冤狡,即 this.setData({ field: obj }) 后 this.data.field === obj 。(深復制會在這個值被組件間傳遞時發(fā)生项棠。)
如果頁面比較復雜悲雳,新增或刪除 usingComponents 定義段時建議重新測試一下。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末香追,一起剝皮案震驚了整個濱河市怜奖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翅阵,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迁央,死亡現(xiàn)場離奇詭異掷匠,居然都是意外死亡,警方通過查閱死者的電腦和手機岖圈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門讹语,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜂科,你說我怎么就攤上這事顽决。” “怎么了导匣?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵才菠,是天一觀的道長。 經(jīng)常有香客問我贡定,道長赋访,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任缓待,我火速辦了婚禮蚓耽,結果婚禮上,老公的妹妹穿的比我還像新娘旋炒。我一直安慰自己步悠,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布瘫镇。 她就那樣靜靜地躺著鼎兽,像睡著了一般答姥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上接奈,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天踢涌,我揣著相機與錄音,去河邊找鬼序宦。 笑死睁壁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的互捌。 我是一名探鬼主播潘明,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秕噪!你這毒婦竟也來了钳降?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腌巾,失蹤者是張志新(化名)和其女友劉穎遂填,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澈蝙,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡吓坚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灯荧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片礁击。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逗载,靈堂內的尸體忽然破棺而出哆窿,到底是詐尸還是另有隱情,我是刑警寧澤厉斟,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布挚躯,位于F島的核電站,受9級特大地震影響捏膨,放射性物質發(fā)生泄漏秧均。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一号涯、第九天 我趴在偏房一處隱蔽的房頂上張望目胡。 院中可真熱鬧,春花似錦链快、人聲如沸誉己。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巨双。三九已至噪猾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筑累,已是汗流浹背袱蜡。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留慢宗,地道東北人坪蚁。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像镜沽,于是被迫代替她去往敵國和親敏晤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • 1.小程序起步 (1)點擊https://mp.weixin.qq.com/wxopen/waregister?a...
    GXW_Lyon閱讀 3,354評論 0 0
  • 什么是微信小程序的自定義組件以及意義 自定義組件,類似于Vue中的組件概念(事件通信機制非常類似)蔬墩,將頁面內的一些...
    Gopal閱讀 685評論 0 0
  • 因新工作主要負責微信小程序這一塊译打,最近的重心就移到這一塊,該博客是對微信小程序整體的整理歸納以及標明一些細節(jié)點拇颅,初...
    majun00閱讀 7,341評論 0 9
  • 人生第一次無知犯錯扶平,16歲時因為一人家說了句“讀書有什么卵用”心里覺得難受就把書包扔進池塘,當時就覺得花了...
    馬興堅閱讀 82評論 0 0
  • 我在云南麗江短期旅游哥谷,住在一個客棧岸夯;為了留個紀念,特意向客棧的老板娘借了筆墨们妥,在客廳用毛筆給我女兒寫張明信片猜扮。不知...
    杰郭閱讀 314評論 0 0