vue组建通信,包含父子组建、跨级(爷孙)通信、兄弟组件(类似于观察者模式)通信

本文介绍Vue.js中实现父子组件及兄弟组件间的通信方式。通过实例展示了如何使用props和$emit进行父子组件间的消息传递,以及如何利用Vue原型上的bus实现非父子关系组件间的通信。

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


	<div id="app">
		<h1>下面的父子通信,主要组件定义的顺序不能换</h1>
		<parent></parent>
		<h1>下面的兄弟组件通信,</h1>
		<up></up>
		<down></down>
	</div>
	<script type="text/javascript">
		Vue.component('child',{
			props:['fname'],
			template:`
			<div>
			这是子组件,父组件是{{fname}}
			<button @click="$emit('toParent','子组件的信息来了')">点击通知消息</button>
			</div>
			`
		})
		Vue.component('parent',{
			data(){
				return{
					info:'无消息'
				}
				
			},
			template:`
			<div>
			这是父组件,{{info}}
			<child fname="parent" @toParent="getMessage" ></child>
			</div>
			`,
			methods:{
				getMessage(msg){
					this.info=msg
				}
			}
		})
		
		let bus=new Vue()
		Vue.prototype.bus=bus
		Vue.component('up', {
			data() {
				return {
					msg: '未传递消息'
				}
			},
			template: `
			<div class="up">
			<p>这是up组件, 下一行为down传递的消息</p>
			<p>{{msg}}</p>
			</div>
			`,
			mounted() {
				this.bus.$on('send', (msg)=> {
					this.msg = (msg)
				})
			}
		})

		Vue.component('down', {
			template: `
			<div class="down">
			<p>这是down</p>
			<button @click="toUp">点击我向up组件传递消息</button>
			</div>
			`,
			methods: {
				toUp() {
					this.bus.$emit('send', 'down来消息了')
				}
			}
		})

		new Vue({
			el: '#app',
		})
	</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值