商丘三合一網(wǎng)站建設(shè)廈門seo推廣優(yōu)化
💌 所屬專欄:【微信小程序開發(fā)教程】
😀 作??者:我是夜闌的狗🐶
🚀 個(gè)人簡(jiǎn)介:一個(gè)正在努力學(xué)技術(shù)的CV工程師,專注基礎(chǔ)和實(shí)戰(zhàn)分享 ,歡迎咨詢!
💖 歡迎大家:這里是CSDN,我總結(jié)知識(shí)的地方,喜歡的話請(qǐng)三連,有問題請(qǐng)私信 😘 😘 😘
文章目錄
- 前言
- 一、behaviors
- 1、什么是 behaviors
- 2、behaviors 的工作方式
- 3、創(chuàng)建 behavior
- 4、導(dǎo)入并使用 behavior
- 5、behavior 中所有可用的節(jié)點(diǎn)
- 6、同名字段的覆蓋和組合規(guī)則
- 總結(jié)
前言
??大家好,又見面了,我是夜闌的狗🐶,本文是專欄【微信小程序開發(fā)教程】專欄的第39篇文章;
??今天開始學(xué)習(xí)微信小程序的第22天💖💖💖,開啟新的征程,記錄最美好的時(shí)刻🎉,每天進(jìn)步一點(diǎn)點(diǎn)。
??專欄地址:【微信小程序開發(fā)教程】, 此專欄是我是夜闌的狗微信小程序開發(fā)過程的總結(jié),希望能夠加深自己的印象,以及幫助到其他的小伙伴😉😉。
??如果文章有什么需要改進(jìn)的地方還請(qǐng)大佬不吝賜教👏👏。
一、behaviors
??前面已經(jīng)介紹了自定義組件 - 父子組件之間的通信,通過栗子學(xué)習(xí)了父組件如何給子組件傳遞以及父子組件之間傳值進(jìn)行同步。接下來(lái)就來(lái)講解一下另外一個(gè)自定義組件 - behaviors。話不多說,讓我們?cè)脑倮m(xù),書接上回吧。
1、什么是 behaviors
??behaviors
是小程序中,用于實(shí)現(xiàn)組件間代碼共享的特性,類似于 Vue.js 中的 “mixins”。
2、behaviors 的工作方式
??每個(gè) behavior
可以包含一組屬性、數(shù)據(jù)、生命周期函數(shù)和方法。組件引用它時(shí),它的屬性、數(shù)據(jù)和方法會(huì)被合并到組件中,生命周期函數(shù)也會(huì)在對(duì)應(yīng)時(shí)機(jī)被調(diào)用。 每個(gè)組件可以引用多個(gè) behavior
,behavior
也可以引用其它 behavior
。
3、創(chuàng)建 behavior
??創(chuàng)建 behaviors 文件夾以及對(duì)應(yīng)的 js 文件,調(diào)用 Behavior(Object object) 方法即可創(chuàng)建一個(gè)共享的 behavior 實(shí)例對(duì)象,供所有的組件使用:
my-behavior.js
?? 使用 module.exports 將 behaviors 實(shí)例對(duì)象共享出去。
module.exports = Behavior({// 屬性節(jié)點(diǎn)data:{username: '我是夜闌的狗'},// 私有數(shù)據(jù)節(jié)點(diǎn)properties: {},// 事件處理函數(shù)和自定義方法節(jié)點(diǎn)methods:{},
})
4、導(dǎo)入并使用 behavior
?? 在組件中,使用 require() 方法導(dǎo)入需要的 behavior,掛載后即可訪問 behavior 中的數(shù)據(jù)或方法,具體代碼如下:
test5.js
const myBehavior = require('../../behaviors/my-behavior');Component({behaviors: [myBehavior],
})
test5.wxml
<text>子組件中, count當(dāng)前值為:{{count}}</text>
<button bindtap="addCount">count+1</button>
<view>behaviors中的用戶名是:{{username}}</view>
?? 可以來(lái)看一下運(yùn)行效果:
5、behavior 中所有可用的節(jié)點(diǎn)
?? 接下來(lái)看一下 behavior 都有哪些節(jié)點(diǎn)可以用,如下表所示:
可用的節(jié)點(diǎn) | 類型 | 是否必填 | 描述 | 最低版本 |
---|---|---|---|---|
properties | Object Map | 否 | 組件的對(duì)外屬性,是屬性名到屬性設(shè)置的映射表 | |
data | Object | 否 | 組件的內(nèi)部數(shù)據(jù),和 properties 一同用于組件的模板渲染 | |
observers | Object | 否 組 | 件數(shù)據(jù)字段監(jiān)聽器,用于監(jiān)聽 properties 和 data 的變化,參見 數(shù)據(jù)監(jiān)聽器 | 2.6.1 |
methods | Object | 否 | 組件的方法,包括事件響應(yīng)函數(shù)和任意的自定義方法,關(guān)于事件響應(yīng)函數(shù)的使用,參見 組件間通信與事件 | |
behaviors | String Array | 否 | 類似于mixins和traits的組件間代碼復(fù)用機(jī)制,參見 behaviors | |
created | Function | 否 | 組件生命周期函數(shù)-在組件實(shí)例剛剛被創(chuàng)建時(shí)執(zhí)行,注意此時(shí)不能調(diào)用 setData ) | |
attached | Function | 否 | 組件生命周期函數(shù)-在組件實(shí)例進(jìn)入頁(yè)面節(jié)點(diǎn)樹時(shí)執(zhí)行) | |
ready | Function | 否 | 組件生命周期函數(shù)-在組件布局完成后執(zhí)行) | |
moved | Function | 否 | 組件生命周期函數(shù)-在組件實(shí)例被移動(dòng)到節(jié)點(diǎn)樹另一個(gè)位置時(shí)執(zhí)行) | |
detached | Function | 否 | 組件生命周期函數(shù)-在組件實(shí)例被從頁(yè)面節(jié)點(diǎn)樹移除時(shí)執(zhí)行) | |
relations | Object | 否 | 組件間關(guān)系定義,參見 組件間關(guān)系 | |
lifetimes | Object | 否 | 組件生命周期聲明對(duì)象,參見 組件生命周期 | 2.2.3 |
pageLifetimes | Object | 否 | 組件所在頁(yè)面的生命周期聲明對(duì)象,參見 組件生命周期 | 2.2.3 |
definitionFilter | Function | 否 | 定義段過濾器,用于自定義組件擴(kuò)展,參見 自定義組件擴(kuò)展 | 2.2.3 |
6、同名字段的覆蓋和組合規(guī)則
?? 組件和它引用的 behavior
中可以包含同名的字段,此時(shí)可以參考如下 3 種同名時(shí)的處理規(guī)則:
- 同名的數(shù)據(jù)字段 (
data
) - 同名的屬性 (
properties
) 或方法 (methods
) - 同名的生命周期函數(shù)
?? 關(guān)于詳細(xì)的覆蓋和組合規(guī)則,大家可以參考微信小程序 官方文檔 給出的說明。
??這里以同名的屬性為例來(lái)學(xué)習(xí)一下,具體代碼如下:
my-behavior.js
module.exports = Behavior({// 屬性節(jié)點(diǎn)data:{username: '我是夜闌的狗'},// 私有數(shù)據(jù)節(jié)點(diǎn)properties: {},// 事件處理函數(shù)和自定義方法節(jié)點(diǎn)methods:{},
})
test5.js
Component({/*** 組件的初始數(shù)據(jù)*/data: {username: 'CSH'},
})
?? 此時(shí),組件與引用的 behaviors 中屬性名相同了,這里組件的同名屬性就會(huì)覆蓋 behaviors 中屬性,可以來(lái)看一下運(yùn)行效果:
總結(jié)
??感謝觀看,這里就是自定義組件 - behaviors 的介紹使用,如果覺得有幫助,請(qǐng)給文章點(diǎn)個(gè)贊吧,讓更多的人看到。🌹 🌹 🌹
??也歡迎你,關(guān)注我。👍 👍 👍
??原創(chuàng)不易,還希望各位大佬支持一下,你們的點(diǎn)贊、收藏和留言對(duì)我真的很重要!!!💕 💕 💕 最后,本文仍有許多不足之處,歡迎各位認(rèn)真讀完文章的小伙伴們隨時(shí)私信交流、批評(píng)指正!下期再見。🎉
更多專欄訂閱:
- 😀 【LeetCode題解(持續(xù)更新中)】
- 🚝 【Java Web項(xiàng)目構(gòu)建過程】
- 💛 【微信小程序開發(fā)教程】
- ? 【JavaScript隨手筆記】
- 🤩 【大數(shù)據(jù)學(xué)習(xí)筆記(華為云)】
- 🦄 【程序錯(cuò)誤解決方法(建議收藏)】
- 🚀 【軟件安裝教程】
訂閱更多,你們將會(huì)看到更多的優(yōu)質(zhì)內(nèi)容!!