vue2、vue3 组件通讯

文章介绍了Vue2中父组件通过props向子组件传递数据,子组件通过$on/$emit进行回传,以及非父子组件间使用全局事件总线的方法。在Vue3中,除了上述方式,还引入了provide/injectAPI,以及如何在没有内置eventBus的情况下使用mitt库实现全局通信。
摘要由CSDN通过智能技术生成

一.vue2

 1.父传子: props主要用于父组件传递数据给子组件。

  在父组件中使用$ref自定义属性进行发送

 在子组件中使用props进行接收

 2.子传父: 使用自定义事件$on  $emit。

在子组件中首页$emit发送数据,触发自定义事件 

在父组件中使用$on 触发回调函数得到参数

 

 仅仅用于父子组件传递,不适用于 三层及其以上

3.非父子组件传参:全局事件总线

 安装全局事件总线

使用 

 

 二.vue3

除了可以使用vue2的父子传参之外还可以使用以下传参方式

使用全局事件总线需要使用第三方工具

1.provide/inject

provide/inject是 Vue 中提供的一对 API。无论层级多深,API 都可以实现父组件到子孙组件的数据传递。

 

2.vue3使用全局事件总线

 Vue 3 中移除了 eventBus,但可以借助第三方工具来完成

(1) 安装第三方工具

npm i mitt -s

(2) 安装完成后,根目录新建一个文件夹mitt,创建一个文件叫event.js
文件内容如下:

import mitt from 'mitt'

const emitter = mitt();

export default emitter

(3)在需要传递的两个组将中引入 你创建的文件

import emitter from '文件地址'

(4)在setup中使用emitter.on

setup(){

emitter.on('edit',(data)=>{

console.log(data)

})

return{}

}

(5)触发

setup(){

emitter.emit('edit','需要传递的数据')

return{}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值