一文搞懂vue的父子传值

数据共享

在日常开发会经常碰到组件之间数据传输的问题,一般情况最常用的就是这两种关系的数据传输关系:

在这里插入图片描述

两种传输方式采用不同的方法,下面就进行详细分析一下。

父子传值

父组件向子组件共享数据需要使用自定义属性。示例代码如下:
在这里插入图片描述

父组件

父组件通过引入的方式将子组件引入并且注册使用

<template>
	<CommodityInfo :msg='message'></CommodityInfo>
</template>

<script>
import CommodityInfo from "./components/CommodityInfo.vue";
export default {
	components: {CommodityInfo},
	data(){
		return{
			message:'父组件'
		}
	}
}
</script>

通过:msg='message'将message传给CommodityInfo
这里的msg对应的是子组件接收的方法名(所以字段必须一致),而值则是message

子组件

子组件通过props进行接收

<template>
	<div>
		<h1>父组件传递过来的值为:{{ msg }}</h1>
	</div>
</template>
<script>
	export default {
  	props:['msg'],
  }
</script>

子父传值

子组件向父组件共享数据使用自定义事件。示例代码如下:在这里插入图片描述

子组件

子组件通过this.$emit将data穿给父组件,这里的numchange是传给父组件的方法名(同样,字段与接收时必须一致),this.data则是需要传给父组件的值。

<script>
export default {
	data(){
    return{
      data: '子组件穿入的数据',
    }
  },
	methods:{
		Transmit(){
			this.$emit('numchange',this.data)
		}
	}
}
</script>

父组件

父组件通过@numchange接收到的值去触发getNumchange,而val则就是子组件传过来的值(this.data)

<template>
	<CommodityInfo @numchange='getNumchange'></CommodityInfo>
</template>

<script>
import CommodityInfo from "./components/CommodityInfo.vue";
export default {
	components: {CommodityInfo},
	data(){
		return{
			numchange:''
		}
	},
	methods:{
		getNumchange(val){
			this.numchange = val
		}
	}
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wh1T3ZzT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值