Vue中非父子组件传值的方式

本文详细介绍如何使用Vue创建全局事件总线,实现组件间的数据传递。通过三步操作:创建公共js文件、广播数据、接收数据,轻松完成组件间的通信。

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

只需三个步骤:

1.创建一个公共的js文件(如vueEvent.js),引入并实例化Vue,然后暴露这个实例。

//创建vueEvent.js
import Vue from 'vue'

var vueEvent = new Vue();

export default vueEvent

   并在参与传值和接收值的组件中,引入vueEvent

2.在传值的组件中,通过vueEvent.$emit('名称','数据')进行广播

<template>
    <div id="home">
		<h1>我是Home组件</h1>
	    <button @click="emitNews()">给NEWS组件广播数据</button>
    </div>
</template>

<script>
  import vueEvent from '../model/vueEvent.js';	
	
  export default{
  	data(){
  		return {
  			msg: '我是要传给News组件的值'
  		}
  	},
  	methods:{
  		emitNews(){
  		   //广播数据
  		   vueEvent.$emit('to-news', this.msg);
  		}
  	}
  }
</script>

3.在接收值的组件中,通过vueEvent.$on('名称',function ( ){ })接收广播的数据

<template>
	<div id="news">
		<h3>我是News组件</h3>
	</div>
</template>

<script>
  import vueEvent from '../model/vueEvent.js';
	
  export default{
  	data(){
  		return {
  			msg: '',
  		}
  	},
  	mounted(){
                //接收数据
		vueEvent.$on('to-news', function(data){
			console.log(data);
		})
	}
  }
</script>

最后News组件成功打印出Home组件中的msg:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值