vue之组件通信

2 篇文章 0 订阅
1 篇文章 0 订阅
本文详细介绍了Vue中父子组件间的通信方式,包括props从父向子传递值,子组件通过$emit向父组件发送事件传递数据,父组件通过ref直接调用子组件的方法或字段,以及使用Vuex进行全局状态管理。示例代码展示了如何在实际开发中应用这些通信机制,并特别提示了使用ref时需要注意子组件动态渲染的情况。
摘要由CSDN通过智能技术生成

1.父向子传值——props
2.子给父传值——$emit(name,data)
3.父直接读子方法或字段——ref
4.vuex(该方法已详细介绍,可查看之前文章)
子组件示例:

<template>
	<div @click="open">{{childData}}</div>
	<div @click="close">hello world</div>
</template>

<script>
export default{
	name:'child',
	props: ['childData'],
	data(){
		return{
			name:'子组件'
		}
	},
	methods:{
		open(){
			//该方法意指将open方法暴露给父组件,closeMark可自定义名字
			 this.$emit('closeMark',this.name)  //不用传值可以不写this.name
		},
		close(){
			//该方法将用于演示父组件直接调用
			this.name='父组件改变了我'
		},
	}
}
</script>

父组件示例:

<template>
	<div @click="giveMoney">我!秦始皇!打钱!</div>
	<child @closeMark="fatherClick" :childData="datas" ref="children" />
</template>

<script>
import child '@/views/child.vue'
export default{
	props: ['childData'],
	data(){
		return{
			datas:'父组件'
		}
	},
	methods:{
		giveMoney(){
			this.$refs.children.close() //父组件可通过该方法直接调用子组件的事件
			this.$refs.children.name='迪迦' //也可以直接操作子组件data,该方法过于粗暴不建议使用!
		},
		fatherClick(name){
			//name即子组件通过open事件传递过来的值
			this.datas=name
		},
	},
	//子组件别忘了在这里注册一下!!!
	components:{
		child 
	}
}
</script>

Tips:注意!这里的ref方法有一个注意点,拿好小本本准备做笔记了。如果子组件是根据需求动态渲染,比如加上了v-if,则this.$refs.children会报错Undefined,这是因为父组件挂载时子组件还未渲染,可以改成v-show,如果还有其他方法欢迎补充~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值