vue3组件通信

这篇博客探讨了如何在Vue3中进行组件通信,特别通过使用ElementPlus的日期区间组件为例,详细讲解了父组件如何传递数据给子组件,以及在子组件中如何接收并利用这些数据。文章介绍了两种方法,包括传统的Vue3语法和推荐的语法糖写法。

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

这里利用之前封装的elementPlus 日期区间组件来讲一下vue3组件之间的通信

父组件

<v-date-picker  @itemChange="getChangeTime"/>

const getChangeTime = (e)=>{
//获取子组件传过来的值
	//e[0]:开始日期
	//e[1]:结束日期
}

子组件接收

vDatePicker.vue

<template>
	<el-date-picker 
		v-model="Times"  
		type="daterange" 
		:range-separator="rangeName" 
		:start-placeholder="startName"
		:end-placeholder="endName" 
		@change="getTime">
	</el-date-picker>
</template>

<script>
	import {ref} from "vue";
	import utils from "../utils/utils.js"//这边主要做一个日期转换
	export default {
		props:{
			rangeName:{
				type:String,
				default:'至'
			},
			startName:{
				type:String,
				default:'开始日期'
			},
			endName:{
				type:String,
				default:'结束日期'
			},
		},
		setup(props,{ slots, attrs, emit }){
			  const Times = ref([]);
			  const getTime = ()=>{
				  if(Times.value && Times.value.length>0){
					 let arr =[utils.dateFormat(Times.value[0]),utils.dateFormat(Times.value[1])];
					 emit('itemChange', arr)//这里通过emit给父组件传值,itemChange
				  }else{
				  	emit('itemChange', [])
				  }
			  }
			  return{
				  Times,
				  getTime
			  }
			
		}
	}
</script>


vue3语法糖写法(建议)

<script setup>
	import {
		ref,
	} from "vue";
	import utils from "../utils/utils.js"
	defineProps({
		rangeName: {
			type: String,
			default: '至'
		},
		startName: {
			type: String,
			default: '开始日期'
		},
		endName: {
			type: String,
			default: '结束日期'
		},
	})

	const Times = ref([]);
	const emit = defineEmits(['itemChange'])
	const getTime = () => {
		if (Times.value && Times.value.length > 0) {
			let arr = [utils.dateFormat(Times.value[0]), utils.dateFormat(Times.value[1])];
			emit('itemChange', arr)
		} else {
			emit('itemChange', [])
		}
	}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值