最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

uniapp+Vue3 組件之間的傳值方法示例詳解

 更新時(shí)間:2025年03月14日 09:56:28   作者:我是陳大大  
文章主要介紹了父子傳值、兄弟傳值和provide/inject三種在Vue中進(jìn)行組件間通信的方法,感興趣的朋友跟隨小編一起看看吧

一、父子傳值(props / $emit 、ref / $refs)

1、props / $emit

父組件通過(guò) props 向子組件傳遞數(shù)據(jù),子組件通過(guò) $emit 觸發(fā)事件向父組件傳遞數(shù)據(jù)。

 父組件:

// 父組件中
<template>
    <view class="container">
		<view class="row" v-for="(item, index) in listData" :key="item.pkId">
			<newsbox pageTitle="待辦" :itemInfo="item"></newsbox>
		</view>
	</view>
</template>
<script setup>
import { ref } from 'vue';
let listData = ref([{name: "張三", age: "18"}, {name: "李四", age: "19"}])
</script>
<style lang="scss" scoped>
.container{
    padding: 10rpx 30rpx;
    .row{
        padding: 10rpx 0;
    }
}
</style>

子組件:

// 子組件中
<template>
    <view class="box">
		<text class="title">
		    {{pageTitle}}
	    </text>	
        <text class="name">
		    {{itemInfo.name}}
	    </text>	
	</view>
</template>
<script setup>
	defineProps({
		itemInfo: {
			type: Object,
			default: {}
		},
		pageTitle: {
			type: String,
			default: ""
		}
	})
</script>
<style lang="scss" scoped>
.box {
    .title {
        font-size: 32rpx;
    }
    .name {
        font-size: 28rpx;
    }
}
</style>

二、兄弟傳值( $emit / $on )

借助中間代理, $emit 和 $on

1、說(shuō)明

uni.$emit(eventName,OBJECT)

觸發(fā)全局的自定義事件,附加參數(shù)都會(huì)傳給監(jiān)聽(tīng)器回調(diào)函數(shù)。

HarmonyOS Next 兼容性

代碼示例

uni.$emit('update',{msg:'頁(yè)面更新'})

uni.$on(eventName,callback)

監(jiān)聽(tīng)全局的自定義事件,事件由 uni.$emit 觸發(fā),回調(diào)函數(shù)會(huì)接收事件觸發(fā)函數(shù)的傳入?yún)?shù)。

HarmonyOS Next 兼容性

代碼示例 

uni.$on('update',function(data){
	console.log('監(jiān)聽(tīng)到事件來(lái)自 update ,攜帶參數(shù) msg 為:' + data.msg);
})

uni.$off(eventName, callback)

移除全局自定義事件監(jiān)聽(tīng)器。

HarmonyOS Next 兼容性

Tips

  • 如果uni.$off沒(méi)有傳入?yún)?shù),則移除App級(jí)別的所有事件監(jiān)聽(tīng)器;
  • 如果只提供了事件名(eventName),則移除該事件名對(duì)應(yīng)的所有監(jiān)聽(tīng)器;
  • 如果同時(shí)提供了事件與回調(diào),則只移除這個(gè)事件回調(diào)的監(jiān)聽(tīng)器;
  • 提供的回調(diào)必須跟$on的回調(diào)為同一個(gè)才能移除這個(gè)回調(diào)的監(jiān)聽(tīng)器;

代碼示例

$emit$on、$off常用于跨頁(yè)面、跨組件通訊,這里為了方便演示放在同一個(gè)頁(yè)面

<template>
		<view class="content">
			<view class="data">
				<text>{{val}}</text>
			</view>
			<button type="primary" @click="comunicationOff">結(jié)束監(jiān)聽(tīng)</button>
		</view>
	</template>
	<script>
		export default {
			data() {
				return {
					val: 0
				}
			},
			onLoad() {
				setInterval(()=>{
					uni.$emit('add', {
						data: 2
					})
				},1000)
				uni.$on('add', this.add)
			},
			methods: {
				comunicationOff() {
					uni.$off('add', this.add)
				},
				add(e) {
					this.val += e.data
				}
			}
		}
	</script>
	<style>
		.content {
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
		}
		.data {
			text-align: center;
			line-height: 40px;
			margin-top: 40px;
		}
		button {
			width: 200px;
			margin: 20px 0;
		}
	</style>
 

注意事項(xiàng)

  • uni.$emit、 uni.$on 、 uni.$once 、uni.$off 觸發(fā)的事件都是 App 全局級(jí)別的,跨任意組件,頁(yè)面,nvue,vue 等
  • 使用時(shí),注意及時(shí)銷(xiāo)毀事件監(jiān)聽(tīng),比如,頁(yè)面 onLoad 里邊 uni.$on 注冊(cè)監(jiān)聽(tīng),onUnload 里邊 uni.$off 移除,或者一次性的事件,直接使用 uni.$once 監(jiān)聽(tīng)
  • 注意 uni.$on 定義完成后才能接收到 uni.$emit 傳遞的數(shù)據(jù)
  • eventName 應(yīng)避免使用 uni 開(kāi)頭,以免與 uni-app 內(nèi)置事件沖突

三、provide/inject

簡(jiǎn)單講解:provide和inject叫依賴(lài)注入,是vue官方提供的API,它們可以實(shí)現(xiàn)多層組件傳遞數(shù)據(jù),無(wú)論層級(jí)有多深,都可以通過(guò)這API實(shí)現(xiàn)。
假設(shè)這是太老爺組件: provide(‘名稱(chēng)’, 傳遞的參數(shù))向后代組件提供數(shù)據(jù), 只要是后代都能接收

<template>
  <div></div>
</template>
<script setup>
import { ref, provide } from 'vue'
const name = ref('天天鴨')
// 向后代組件提供數(shù)據(jù), 只要是后代都能接收
provide('name', name.value)
</script>

最深層的孫組件: 無(wú)論層級(jí)多深,用 inject(接收什么參數(shù)) 進(jìn)行接收即可 

<template>
  <div>{{ name }}</div>
</template>
<script setup>
import { inject } from 'vue'
// 接收頂層組件的通信
const name = inject('name')
</script>

到此這篇關(guān)于uniapp+Vue3 組件之間的傳值方法示例詳解的文章就介紹到這了,更多相關(guān)uniapp Vue3 組件傳值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • 基于Vue3+Node.js實(shí)現(xiàn)實(shí)時(shí)可視化監(jiān)控系統(tǒng)

    基于Vue3+Node.js實(shí)現(xiàn)實(shí)時(shí)可視化監(jiān)控系統(tǒng)

    在日常運(yùn)維和開(kāi)發(fā)工作中,服務(wù)器監(jiān)控是必不可少的環(huán)節(jié),市面上有不少優(yōu)秀的監(jiān)控方案,但對(duì)于中小型團(tuán)隊(duì)或個(gè)人開(kāi)發(fā)者來(lái)說(shuō),這些工具往往過(guò)于復(fù)雜,學(xué)習(xí)成本較高,本文將介紹我自己開(kāi)發(fā)的 ServWatch 監(jiān)控系統(tǒng)——一個(gè)輕量級(jí)、易部署、界面美觀(guān)的實(shí)時(shí)監(jiān)控解決方案
    2026-02-02
  • vue使用keep-alive后清除緩存的方法

    vue使用keep-alive后清除緩存的方法

    這篇文章主要給大家介紹了關(guān)于vue使用keep-alive后清除緩存的相關(guān)資料,這個(gè)問(wèn)題在我們?nèi)粘9ぷ髦薪?jīng)常會(huì)用到,本文通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • Vue使用Axios和elementui實(shí)現(xiàn)查詢(xún)分頁(yè)功能

    Vue使用Axios和elementui實(shí)現(xiàn)查詢(xún)分頁(yè)功能

    當(dāng)今的Web開(kāi)發(fā)趨勢(shì)中,前后端分離已經(jīng)成為一種流行的架構(gòu)模式,它將前端和后端的開(kāi)發(fā)分離開(kāi)來(lái),使得前端和后端可以獨(dú)立進(jìn)行開(kāi)發(fā)和部署,本文給大家介紹了Vue使用Axios和elementui實(shí)現(xiàn)查詢(xún)分頁(yè)功能,需要的朋友可以參考下
    2024-06-06
  • 在vue2?中使用?tailwindcss的方法?親測(cè)可用

    在vue2?中使用?tailwindcss的方法?親測(cè)可用

    這篇文章主要介紹了在vue2?中使用?tailwindcss的方法?親測(cè)可用,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 在vue項(xiàng)目中,將juery設(shè)置為全局變量的方法

    在vue項(xiàng)目中,將juery設(shè)置為全局變量的方法

    今天小編就為大家分享一篇在vue項(xiàng)目中,將juery設(shè)置為全局變量的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Vue純前端使用exceljs導(dǎo)出excel文件的完整圖文教程

    Vue純前端使用exceljs導(dǎo)出excel文件的完整圖文教程

    這篇文章將一步一步為大家詳細(xì)介紹一下exceljs插件中的使用,以及如何使用exceljs導(dǎo)出excel文件,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • vue拖拽排序插件vuedraggable使用方法詳解

    vue拖拽排序插件vuedraggable使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue拖拽排序插件vuedraggable的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Vuex 單狀態(tài)庫(kù)與多模塊狀態(tài)庫(kù)詳解

    Vuex 單狀態(tài)庫(kù)與多模塊狀態(tài)庫(kù)詳解

    這篇文章主要介紹了Vuex 單狀態(tài)庫(kù)與多模塊狀態(tài)庫(kù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Vue3 寫(xiě)法示例與規(guī)范詳細(xì)指南

    Vue3 寫(xiě)法示例與規(guī)范詳細(xì)指南

    本文給大家介紹Vue3寫(xiě)法示例與規(guī)范詳細(xì)指南,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-09-09
  • 最新評(píng)論

    涿州市| 西乌| 阿荣旗| 固阳县| 营口市| 湟中县| 武平县| 永吉县| 郁南县| 临西县| 浦东新区| 惠来县| 洛阳市| 奇台县| 喀喇| 长治市| 双峰县| 门源| 商都县| 南皮县| 镇远县| 凤翔县| 班玛县| 外汇| 牡丹江市| 青浦区| 浮山县| 西藏| 通山县| 龙陵县| 白河县| 嘉义县| 临江市| 东乡| 会同县| 莱芜市| 吴堡县| 卓尼县| 临潭县| 全南县| 大田县|