Vue3:组件间通信-$refs和$parent的使用

本文介绍了在Vue3中,如何使用$refs来获取并批量修改子组件的数据,以及$parent用于子组件直接修改父组件变量的方式。通过实际案例展示了这两种父子组件间通信的方法及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、情景说明

我们在之前,学习了Vue3:标签的ref属性用法
我们知道,父组件中,给子组件使用ref标记后,获取到的是,子组件实例。
那么,我们就可以修改子组件实例暴露的变量值。

与之对应的是,子组件获取父组件的实例,从而修改父组件的变量值。

所以,这也可以理解为父子组件之间通信,更准确的说是,父子组件间修改数据。

父组件批量修改多个子组件数据:$refs
子组件修改父组件数据:$parent

二、案例

1、$refs用法

父组件
模板代码:参数$refs

		<button @click="getAllChild($refs)">让所有孩子的书变多</button>
		<Child1 ref="c1"/>
		<Child2 ref="c2"/>

按钮对应的函数代码
这里,就可以同时获取到c1和c2两个实例

	function getAllChild(refs:{[key:string]:any}){
		console.log(refs)
		for (let key in refs){
			refs[key].book += 3
		}
	}

两个子组件
暴露变量,这样父组件就可以操作该变量

	// 把数据交给外部
	defineExpose({book})

2、$parent用法

子组件
模板代码:参数$parent

<button @click="minusHouse($parent)">干掉父亲的一套房产</button>

按钮对应的函数代码

	function minusHouse(parent:any){
		parent.house -= 1
	}

父组件
暴露变量

	// 向外部提供数据
	defineExpose({house})

大家可能会疑问,父组件可以有多个子组件,所以,有对应的$refs
那么,子组件,也可以被多个父组件引用,那是否存在$parents呢?
明确的告诉你,Vue3中没有$parents!
但是,用另外一个办法实现了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值