微信小程序組件復(fù)用機制behaviors示例詳解
簡介:
小程序的 behaviors方法是一種代碼復(fù)用的方式,可以將一些通用的邏輯和方法提取出來,然后在多個組件中復(fù)用,從而減少代碼冗余,提高代碼的可維護性。
使用 behaviors
復(fù)用代碼
如果需要復(fù)用代碼,可以通過 Behavior()
方法定義一個行為,每個行為可以包含屬性、數(shù)據(jù)、生命周期函數(shù)和方法。組件引用該行為時,其屬性、數(shù)據(jù)和方法會被合并到組件中,生命周期函數(shù)也會在相應(yīng)時機被調(diào)用。
組件引用它時,它的屬性、數(shù)據(jù)和方法會被合并到組件中,生命周期函數(shù)也會在對應(yīng)時機被調(diào)用。
具體示例:
一、定義 Behavior
將公共的屬性、數(shù)據(jù)、生命周期函數(shù)、方法等,抽取到單獨的文件夾 behavior.js中
聲明并暴露出去
const Behavior = Behavior({ // 屬性 properties: { label: { type: String, value: '我已同意該協(xié)議' } }, // 數(shù)據(jù) data: { name: 'Tom', obj: { name: 'Tyke' } }, // 方法 methods: { updateName() { this.setData({ name: 'Jerry' }) } }, // 生命周期 lifetimes: { attached() { console.log('我是組件的生命周期函數(shù)') } } }); module.exports = Behavior;
二、創(chuàng)建組件:
在component/example/example.js中創(chuàng)建一個組件,引用注冊之前定義的Behavior
const behavior = require('../../behaviors/behavior.js'); Component({ behaviors: [behavior], // 引用行為 properties: { customLabel: String // 自定義屬性 }, data: { message: 'Hello Behavior!' }, methods: { onTap() { this.updateName(); // 調(diào)用行為中的方法 console.log(this.data.name); // 輸出: Jerry } } });
注冊behavior后,當(dāng)前被注冊組件擁有 behavior中的所有屬性、數(shù)據(jù)、方法,也能觸發(fā)生命周期
三、組件模版
在component/example/example.wxml 文件中獲取數(shù)據(jù)并渲染
<view> <text>{{ label }}: {{ name }}</text> <!-- 使用行為的屬性和數(shù)據(jù) --> <text>{{ customLabel }}</text> <!-- 使用組件的自定義屬性 --> <text>{{ message }}</text> <!-- 使用組件的數(shù)據(jù) --> <button bindtap="onTap">更新姓名</button> </view>
存在了相同項的情況處理
如果在behavior和 當(dāng)前匿名組件中存儲了相同的項,并且項中有相同的變量
此時遵循就近原則(在自定義組件內(nèi)部定義的會覆蓋 behavior.js文件中定義的)
具體情況如下:
- 存在相同的 properties
- 就近原則,使用組件內(nèi)部的數(shù)據(jù)
- 存在相同的方法
- 就近原則,使用組件內(nèi)部的數(shù)據(jù)
- 存在相同的 data
- 如果是對象類型,屬性會進行合并
- 如果不是對象類型的數(shù)據(jù),就近原則,展示的以組件內(nèi)部為準(zhǔn)
- 存在相同的生命周期函數(shù)和observers
- 生命周期函數(shù)都會被觸發(fā)(不會相互覆蓋,會是在對應(yīng)觸發(fā)時機被逐個調(diào)用,也就是都會被執(zhí)行)
如果有同名的屬性或方法,采用"就近原則",組件會覆蓋behavior中的同名屬性或方法
如果有同名的數(shù)據(jù)字段且都是對象類型,會進行對象合并,其余情況會采用“就近原則"進行數(shù)據(jù)覆蓋
到此這篇關(guān)于微信小程序組件復(fù)用機制behaviors的文章就介紹到這了,更多相關(guān)微信小程序behaviors內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
優(yōu)化javascript的執(zhí)行效率一些方法總結(jié)
本文為大家介紹下優(yōu)化javascript的執(zhí)行效率一些方法,個人感覺還不錯,感興趣的朋友可以了解下2013-12-12靜態(tài)頁面html中跳轉(zhuǎn)傳值的JS處理技巧
這篇文章主要介紹了靜態(tài)頁面html中跳轉(zhuǎn)傳值的JS處理技巧,結(jié)合實例形式分析了HTML頁面跳轉(zhuǎn)通過URL傳遞參數(shù)的方法與javascript處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-06-06JavaScript中如何在一個循環(huán)中等待示例代碼詳解
這篇文章主要介紹了在JavaScript中如何在一個循環(huán)中等待(附代碼示例),下面是如何使用for..of 循環(huán)來迭代一個數(shù)組并在循環(huán)內(nèi)等待,需要的朋友可以參考下2022-08-08javascript中的相等操作符(==與===區(qū)別)
這篇文章主要介紹了javascript中的相等操作符(==與===區(qū)別),需要的朋友可以參考下2019-12-12使用CSS+JavaScript或純js實現(xiàn)半透明遮罩效果的實例分享
這篇文章主要介紹了使用CSS+JavaScript或純js實現(xiàn)半透明遮罩效果的實例分享,編寫半透明遮罩層時要注意定位問題、不要滿屏遮罩,需要的朋友可以參考下2016-05-05通過Javascript將數(shù)據(jù)導(dǎo)出到外部Excel文檔的函數(shù)代碼
通過Javascript將數(shù)據(jù)導(dǎo)出到外部Excel文檔的函數(shù)代碼,需要的朋友可以參考下2012-06-06JavaScript實現(xiàn)點擊出現(xiàn)圖片并統(tǒng)計點擊次數(shù)功能示例
這篇文章主要介紹了JavaScript實現(xiàn)點擊出現(xiàn)圖片并統(tǒng)計點擊次數(shù)功能,涉及javascript事件響應(yīng)及頁面元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-07-07