国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【微信小程序】父子組件的創(chuàng)建、通信與事件觸發(fā);組件生命周期

這篇具有很好參考價(jià)值的文章主要介紹了【微信小程序】父子組件的創(chuàng)建、通信與事件觸發(fā);組件生命周期。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

關(guān)于微信小程序中父子組件的創(chuàng)建、傳值,以及涉及到的組件生命周期。

使用組件的優(yōu)點(diǎn)

組件的使用可以提高開發(fā)效率確保功能在各個(gè)頁面上的應(yīng)用和修改的一致性。
例如,對(duì)于一些重復(fù)的功能,比如頂部導(dǎo)航欄或評(píng)論區(qū),將其提煉成組件后,我們只需要在不同的頁面中引用該組件,而無需重復(fù)編寫相同的代碼。這樣能夠減少代碼量,提高代碼的可維護(hù)性。
當(dāng)需要修改這些功能時(shí),只需在組件定義的地方進(jìn)行修改,即可實(shí)現(xiàn)所有引用該組件的頁面都得到更新,避免了在每個(gè)頁面單獨(dú)修改的麻煩。

正文

創(chuàng)建與基本使用

1.1 創(chuàng)建組件
組件一般創(chuàng)建在components文件夾下。
首先在components中新建一個(gè)文件夾,在此文件夾上右擊選擇新建component選項(xiàng)(也可以自己新建page,再將對(duì)應(yīng)生成的四個(gè)子文件移入components中新建的組件文件夾中),建好的目錄結(jié)構(gòu)如下
<component ></component> 子級(jí)觸發(fā)事件,微信小程序,小程序
1.2 使用組件->在父頁面或者父組件的json文件里注冊子組件

{
  "usingComponents": {
    "topNav": "/components/topNav/topnav"
  }
}

1.3 在父頁面或者父組件上應(yīng)用組件

<!-- 父組件中 -->
<view class="container">
    <!-- 頂部菜單 -->
    <topNav></topNav>
</view>

相互傳值或調(diào)用方法

上面的例子只是基礎(chǔ)的用法,不涉及到父子組件之間的通信。
父子組件之間的通信包括:
父組件傳值給子組件、子組件傳值給父組件、父組件調(diào)用子組件的方法、子組件調(diào)用父組件的方法。

1.父組件傳值給子組件

這個(gè)是最簡單也最常用的,主要就是注意子組件中使用properties去接收就好了

  1. 父組件傳值:
  • childValue 是子組件用來接收父組件傳遞的值
  • parentValue 是父組件傳遞給子組件的值。
// 父組件.wxml
<text>這是父組件Component</text>
<view>
  <ChildComponent childValue="{{parentValue}}"></ChildComponent>
</view>


// 父組件.js
Page({
	data: { parentValue : 'Parent'}
})
  1. 子組件接收與使用:
// 子組件.js
// 在子組件中聲明要接收的數(shù)據(jù)類型
Component({
	properties: {
		childValue: String,  // String代表接收的參數(shù)類型
	}
})

//使用父組件傳遞過來的數(shù)據(jù):

// 子組件.wxml
<text>我是子組件ChildComponent</text>
<view>父組件傳遞過來的數(shù)據(jù):{{childValue}}</view>

這樣子組件就可以接收到父組件傳遞過來的值。

2.子組件傳值給父組件

這個(gè)相對(duì)復(fù)雜一些。
使用 triggerEvent() 方法,用法類似于 Vue 中的 $emit(),關(guān)鍵代碼:
this.triggerEvent(‘myevent’, value) myevent是對(duì)應(yīng)父組件中接收的方法

  1. 給子組件自定義一個(gè)事件,并且傳值
// 子組件.wxml
<view class="childContent">
  <text>我是子組件ChildComponent</text>
  <button type="primary" bindtap="handleTap">給父組件傳值</button>
</view>

// 子組件.js
methods: {
	handleTap() {
		// 定義要傳遞的數(shù)據(jù)
		let value = "ChildValue"
		// 觸發(fā)綁定事件, myevent為綁定的父組件中的事件名
		this.triggerEvent('myevent', value)
	},
}
  1. 為父組件中引入的子組件綁定事件
// 父組件.wxml
<view class="parentContent">
  <text>這是父組件Component</text>
  <view>
  	// 綁定子組件中`triggerEvent()`對(duì)應(yīng)的事件方法
    <ChildComponent bindmyevent="myevent"></ChildComponent>
  </view>
  <view>父組件:子組件傳遞過來的數(shù)據(jù) {{ParentValue}}</view>
</view>

//接收子組件傳遞過來的內(nèi)容
// 父組件.js
methods: {
	myevent(e) {
		// 這里通過 e 就可以接收子組件傳過來的內(nèi)容了
		console.log(e.detail)
      	this.setData({
        	ParentValue: e.detail
		})
	}
}

3.父組件調(diào)用子組件方法

通過給子組件綁定 id 或 class 選擇器,在父組件里調(diào)用 this.selectComponent 獲取子組件的實(shí)例對(duì)象,就可以調(diào)用子組件中的方法。

其實(shí)就是獲取到了子組件的實(shí)例對(duì)象,那可以調(diào)用它的方法,其實(shí)也可以獲取它的屬性了。

// 子組件.js
methods: {
    Foo() {
      console.log("子組件的方法");
    }
  }

// 父組件.wxml
<view class="parentContent">
  <text>這是父組件Component</text>
  <view>
    <ChildComponent class="ChildEvent"></ChildComponent>
  </view>
  <button type="primary" bindtap="ChildFoo">父組件的按鈕</button>
</view>

// 父組件.js
methods: {
	// 父組件點(diǎn)擊事件,調(diào)用子組件方法
    ChildFoo() {
    	// 獲取子組件的實(shí)例,可以提前獲取
      	let Child = this.selectComponent('.ChildEvent');
      	// 調(diào)用子組件中定義的方法Foo()
      	Child.Foo();
    }
}

4. 子組件調(diào)用父組件方法

子組件通過 this.triggerEvent() 來調(diào)用父組件的方法。

在父組件引入的子組件上添加事件與方法名:
ChildFun是子組件中的方法名,ParentFun是父組件中的方法名;
我們通過子組件的ChildFun來調(diào)用父組件的ParentFun。

// 父組件.wxml
<view>
	<ChildComponent bind:ChildFun="ParentFun"></ChildComponent>
</view>

在父組件中定義方法:
// 父組件.js
methods: {
	ParentFun() {
		console.log('父組件的方法');
	}
}

在子組件中添加了一個(gè)點(diǎn)擊事件,當(dāng)用戶觸發(fā)點(diǎn)擊事件clickParent()的時(shí)候,會(huì)執(zhí)行子組件調(diào)用父組件:

// 子組件.js
methods: {
    clickParent() {
      this.triggerEvent('ChildFun' , )
    }
}

點(diǎn)擊后,子組件就會(huì)執(zhí)行在父組件中的ParentFun()。

注意:this.triggerEvent(‘父組件中子組件上綁定的事件名’ , 參數(shù)(可選))
后面的參數(shù)根據(jù)父組件的方法進(jìn)行填寫。
如果父組件沒有接收參數(shù), 則空著不寫,如果接收一個(gè)參數(shù)就寫一個(gè),兩個(gè)參數(shù)傳入兩個(gè)值。

總結(jié)

簡單總結(jié):

  • 父組件傳值給子組件:子組件properties接收
  • 子組件傳值給父組件:子組件this.triggerEvent()激發(fā)傳給父組件
  • 父組件調(diào)用子組件的方法:父組件使用this.selectComponent 獲取子組件的實(shí)例對(duì)象
  • 子組件調(diào)用父組件的方法:子組件this.triggerEvent()激發(fā)傳給父組件
    可以看出來如果是子組件要想與父組件通信,無論是傳參還是調(diào)用方法,都可以通過this.triggerEvent()實(shí)現(xiàn)。
    傳參也只是調(diào)用方法的一種特殊情況而已。主要看父組件中的調(diào)用的方法是如何使用這個(gè)參數(shù)的。

組件生命周期

具體可查看微信小程序官網(wǎng)內(nèi)容: 小程序官方組件生命周期

組件的生命周期寫法:

Component({
  lifetimes: {
    attached: function() {
      // 在組件實(shí)例進(jìn)入頁面節(jié)點(diǎn)樹時(shí)執(zhí)行
    },
    detached: function() {
      // 在組件實(shí)例被從頁面節(jié)點(diǎn)樹移除時(shí)執(zhí)行
    },
  },
  // 以下是舊式的定義方式,可以保持對(duì) <2.2.3 版本基礎(chǔ)庫的兼容
  attached: function() {
    // 在組件實(shí)例進(jìn)入頁面節(jié)點(diǎn)樹時(shí)執(zhí)行
  },
  detached: function() {
    // 在組件實(shí)例被從頁面節(jié)點(diǎn)樹移除時(shí)執(zhí)行
  },
  // ...
})

關(guān)于執(zhí)行的順序,可以參考微信小程序——組件生命周期這篇文章的解釋。

總結(jié):

  • 小程序在掛載、初始化的時(shí)候,是從內(nèi)到外(從組件到page),在卸載的時(shí)候也是從內(nèi)到外的
  • 頁面回退時(shí),可以觸發(fā) pageLifetimes 的 show,這個(gè)特性可用來更新組件

組件所在頁面的生命周期

Component({
  pageLifetimes: {
    show: function() {
      // 頁面被展示
    },
    hide: function() {
      // 頁面被隱藏
    },
    resize: function(size) {
      // 頁面尺寸變化
    }
  }
})

參考

圖片與創(chuàng)建父子組件部分內(nèi)容參考微信小程序公共組件封裝,父子組件之間相互傳值和相互調(diào)用方法
父子組件傳值通信與事件觸發(fā)主要參考:微信小程序之父子組件傳值通信與事件觸發(fā)(最全實(shí)用總結(jié))文章來源地址http://www.zghlxwxcb.cn/news/detail-780085.html

到了這里,關(guān)于【微信小程序】父子組件的創(chuàng)建、通信與事件觸發(fā);組件生命周期的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微信小程序(四)--- 自定義組件詳解(properties,數(shù)據(jù)監(jiān)聽器,純數(shù)據(jù)字段,插槽,父子間通信,behaviors)

    微信小程序(四)--- 自定義組件詳解(properties,數(shù)據(jù)監(jiān)聽器,純數(shù)據(jù)字段,插槽,父子間通信,behaviors)

    目錄 一、創(chuàng)建組件 二、引用組件 1、局部引用 2、全局引用 三、組件和頁面的區(qū)別 四、組件樣式隔離 1、注意點(diǎn) 2、修改組件的樣式隔離選項(xiàng) ?五、數(shù)據(jù)、方法、屬性 1、data數(shù)據(jù) 2、methods方法 3、properties屬性 ?4、data和properties的區(qū)別 ?5、使用setData修改properties的值 ?六、數(shù)據(jù)

    2024年01月24日
    瀏覽(29)
  • 微信小程序web-view上覆蓋原生組件,解決cover-view點(diǎn)擊事件無法觸發(fā)問題

    微信小程序web-view上覆蓋原生組件,解決cover-view點(diǎn)擊事件無法觸發(fā)問題

    結(jié)合了以下文章,都沒有找到辦法 https://blog.csdn.net/WEIGUO19951107/article/details/94305964 https://blog.csdn.net/weixin_39461487/article/details/80075140 https://developers.weixin.qq.com/community/develop/doc/cbd33199b42aec724e54419ebe6371d7 圖片顯示是這個(gè)文章給我了參考,并且成功 https://blog.csdn.net/one_girl/article/deta

    2024年02月11日
    瀏覽(26)
  • 微信小程序:父子組件傳值

    微信小程序:父子組件傳值

    在微信小程序里,父組件可以向子組件傳值,子組件也可以向父組件傳值,不過這兩種傳值方式不大相同,下面先簡單介紹這兩種傳值的區(qū)別。 兩者的區(qū)別 父組件向子組件傳值,使用的是 ? 屬性綁定 ? 的方法,并且只能傳遞普通類型的數(shù)據(jù) 子組件向父組件傳值,使用的是

    2024年02月07日
    瀏覽(13)
  • 【微信小程序】父子組件之間傳值

    【微信小程序】父子組件之間傳值

    1. 父組件向子組件 傳值 2. 子組件向父組件 傳值 父向子傳值使用的是 屬性綁定 ,子組件中的 properties 對(duì)象進(jìn)行接收父組件傳遞過來的值。 子向父傳值使用的是 自定義事件 ,父組件通過自定義事件中的 事件對(duì)象e 來接收子組件傳遞過來的值。 1.1 在父組件的.json文件中導(dǎo)入子

    2024年02月16日
    瀏覽(23)
  • 微信小程序數(shù)據(jù)綁定和事件觸發(fā)

    數(shù)據(jù)綁定和修改 微信小程序數(shù)據(jù)綁定是指將數(shù)據(jù)和視圖進(jìn)行關(guān)聯(lián),當(dāng)數(shù)據(jù)發(fā)生變化時(shí),視圖也會(huì)相應(yīng)地發(fā)生變化。微信小程序數(shù)據(jù)綁定主要有以下幾種方式: 雙向綁定:雙向綁定是指數(shù)據(jù)和視圖之間的雙向關(guān)聯(lián),當(dāng)數(shù)據(jù)發(fā)生變化時(shí),視圖也會(huì)相應(yīng)地發(fā)生變化,反之亦然。在

    2024年02月10日
    瀏覽(92)
  • 微信小程序長按與單擊事件觸發(fā)

    方式一 wxml 片段 js 片段 解析 tap 觸摸事件采用 catch 阻止事件冒泡 1.5.0之后支持 longpress 事件,手指觸摸后,超過350ms再離開,如果指定了事件回調(diào)函數(shù)并觸發(fā)了這個(gè)事件,tap事件將不被觸發(fā) 方式二(不推薦) longtap 事件,但在觸發(fā)時(shí)會(huì)同時(shí)觸發(fā)單擊事件,需配合 touchstart 和

    2024年02月12日
    瀏覽(21)
  • 微信小程序-如何點(diǎn)擊marker觸發(fā)事件更改圖標(biāo)icon

    微信小程序-如何點(diǎn)擊marker觸發(fā)事件更改圖標(biāo)icon

    最近在做課設(shè),要求實(shí)現(xiàn)一個(gè)找附近停車位的功能 綠色marker為空閑車位,紅色marker為占用車位,現(xiàn)要求實(shí)現(xiàn)點(diǎn)擊綠色marker,進(jìn)行上鎖操作,并讓綠色鎖改為紅色鎖。 如下圖所示: 點(diǎn)擊中間綠色鎖,跳出彈窗,點(diǎn)擊關(guān)鎖,則鎖變紅色。 倘若點(diǎn)擊紅色鎖的關(guān)鎖,則會(huì)提示 “該

    2024年02月03日
    瀏覽(93)
  • 微信小程序 button按鈕怎么觸發(fā)事件? bindtap語法怎么使用?

    微信小程序 button按鈕怎么觸發(fā)事件? bindtap語法怎么使用?

    在前端網(wǎng)頁中我們需要觸發(fā)一個(gè)事件如果按鈕點(diǎn)擊后調(diào)用函數(shù),文本、圖片、鏈接被點(diǎn)擊后調(diào)用一個(gè)函數(shù)一個(gè)事件,我們都知道用click,可是微信小程序中的click是不存在的, 他怎么才能和網(wǎng)頁中一樣的使用click的呢? 這時(shí)候有人肯定會(huì)問,我不是來學(xué)習(xí)click的怎么教我bindt

    2024年01月16日
    瀏覽(523)
  • 微信小程序上拉觸底事件函數(shù)onReachBottom不觸發(fā)的解決方案

    配置屬性問題 高度問題 滾動(dòng)條不在頂部 需要回到頂部重新計(jì)算高度 onReachBottom函數(shù)被覆蓋 1.配置屬性問題 在app.json或者本頁的json文件中配置 onReachBottomDistance 屬性,區(qū)別在于全局還是只在本頁生效 2.高度問題 3. 切換頁面時(shí) 滾動(dòng)條滾回到頂部 4. onReachBottom() 函數(shù)被覆蓋 每個(gè)頁

    2024年02月11日
    瀏覽(16)
  • 【微信小程序】使用全局事件實(shí)現(xiàn)在不同頁面之間共享數(shù)據(jù)或觸發(fā)特定的操作

    在微信小程序中,你可以使用全局事件來實(shí)現(xiàn)在不同頁面之間共享數(shù)據(jù)或觸發(fā)特定的操作。以下是一個(gè)示例代碼: 在app.js文件中,定義全局事件: 在上述代碼中,我們在App對(duì)象中定義了globalData對(duì)象,用于存儲(chǔ)全局?jǐn)?shù)據(jù)。同時(shí),我們定義了onLaunch方法,在小程序初始化時(shí)執(zhí)行

    2024年02月16日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包