vue2组件通信之兄弟通信、祖先后代通信

本文介绍了如何在Vue应用中通过事件总线(eventBus)实现在兄弟组件之间的通信,以及如何使用依赖注入进行祖先后代组件的数据传递。作者详细展示了如何创建事件总线,监听和触发事件,以及在父子组件间使用`provide`和`inject`功能。
摘要由CSDN通过智能技术生成

目录

兄弟组件通信

祖先后代通信


兄弟组件通信

通过事件总线eventBus实现兄弟组件通信

在src下新建一个文件utils

1.创建一个谁都能访问的事件总线(空vue实例)

utils新建一个index.js

//创建eventbus事件总线-一个vue实例对象
import Vue from 'vue'
const vm = new Vue( )
//导出vm
export default vm

在子组件内

HeaderComp组件

2.A组件(接受方),监听Bus的$on事件

使用数据方通过$on订阅

//导入事件总线
import vm from '../utils'
//使用数据方通过$on订阅

//vm.$on( 'useMsg' , (data) => {
//console.log(data)
//})

export default {
    	data ( ) {
		return {
			son_money: 8000}
	},
	methods: {
	handleclick ( ) {

		//使用数据方通过$on订阅
	vm. $on( 'useMsg', (data) => {
    console.log(data)
	})	
}

子组件兄弟

MainComp组件

3.B组件(发送方),触发Bus的$emit事件

使用vm.$emit

//导入事件总线
import vm from '../utils'
export default{
    //组件名称方便调试
    name: 'HeaderComp' ,
    data () {
		return {
				msg: 'HeaderComp组件的数据'}
		},
		methods: {
			handleclick ( ) {
		vm.$emit ( 'useMsg ' , this.msg)}
		}
}

祖先后代通信

依赖注入

孙子组件

孙子组件inject接收数据

export default{
	inject:['money']
}

父亲组件

导入 注册 孙子组件

祖先

祖先通过provide提供数据

import HeaderComp from './components/HeaderComp'
// import MainComp from './components/MainComp'
// 必须默认导出一个对象->组件实例(vue实例)
// 组件使用三部曲 1 创建 2 导入 3  注册
export default {
  // 提供给后代组件的数据
  provide () {
    return {
      money: this.money
    }
  },
  // 父组件的数据
  data () {
    return {
      money: 1000
    }
  },
  components: {
    HeaderComp
    // MainComp
  },
  methods: {
    fn (money) {
      this.money = money
    }
  }
}
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值