vue3父子组件间通信方法

2025-03-15 27

Image

《vue3父子组件间通信方法》

在Vue3项目开发中,父子组件间的通信是常见的需求。为了解决这一问题,我们可以利用props和$emit、provide和inject等机制。

一、使用props和$emit

这是最常用的一种方式。父组件通过props向子组件传递数据,子组件通过$emit触发事件并给父组件传递数据。

定义父组件:
```html

{{parentMsg}}

import { ref } from 'vue'
import ChildComponent from './ChildComponent.vue'

const parentMsg = ref('来自父组件的消息')
// 接收子组件传来的消息
const updateMsg = (msg) => {
parentMsg.value = msg
}

</p>

<p>然后是子组件:
```html

  <div>
    <!-- 显示从父组件接收的数据 -->
    <p>{{myMsg}}</p>
    <button>发送消息给父组件</button>
  </div>
</p>


defineProps(['myMsg'])
// 定义触发的事件
const emit = defineEmits(['change - msg'])

const sendMessage = () => {
  // 触发事件并传递数据
  emit('change - msg', '来自子组件的新消息')
}


<p>

二、使用provide和inject

这种方式适用于祖孙组件或者多层级嵌套组件间的通信。父组件使用provide提供数据,子孙组件用inject注入数据。

父组件代码如下:
```html

import { provide, ref } from 'vue'
import ChildComponent from './ChildComponent.vue'

const sharedMsg = ref('共享的消息')

provide('shared - msg', sharedMsg)

</p>

<p>子组件代码:
```html

  <div>
    <!-- 显示注入的数据 -->
    <p>{{injectedMsg}}</p>
  </div>
</p>


import { inject } from 'vue'

const injectedMsg = inject('shared - msg')


<p>

以上就是Vue3中父子组件通信的两种常见方法,根据实际项目需求选择合适的方式可以更高效地进行组件间的交互。

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载