vue中父 <===>子传值

本文介绍了Vue中父子组件间通信的方式。通过props从父组件向子组件传递数据,包括数据类型限制和默认值设置。子组件使用$emit触发自定义事件来传递信息给父组件,展示了两种不同的事件处理方法,一种直接绑定,另一种使用ref和setTimeout。此外,还提到了组件的销毁和解绑事件。
摘要由CSDN通过智能技术生成

props父传子

子传父的两种方式

props父传子
使用props传输的时候还可以进行时数据的限制

// App文件
<template>
	<div>
		<Student name="李四" sex="女" :age="18"/>
	</div>
</template>

<script>
	import Student from './components/Student'

	export default {
		name:'App',
		components:{Student}
	}
</script>
// Student文件
<template>
	<div>
		<h1>{{msg}}</h1>
		<h2>学生姓名:{{name}}</h2>
		<h2>学生性别:{{sex}}</h2>
		<h2>学生年龄:{{myAge+1}}</h2>
		<button @click="updateAge">尝试修改收到的年龄</button>
	</div>
</template>

<script>
	export default {
		name:'Student',
		data() {
			console.log(this)
			return {
				msg:'我是一个尚硅谷的学生',
				myAge:this.age
			}
		},
		methods: {
			updateAge(){
				this.myAge++
			}
		},
		//简单声明接收
		// props:['name','age','sex'] 

		//接收的同时对数据进行类型限制
		/* props:{
			name:String,
			age:Number,
			sex:String
		} */

		//接收的同时对数据:进行类型限制+默认值的指定+必要性的限制
		props:{
			name:{
				type:String, //name的类型是字符串
				required:true, //name是必要的
			},
			age:{
				type:Number,
				default:99 //默认值
			},
			sex:{
				type:String,
				required:true
			}
		}
	}
</script>

子传父

Student.vue

<button @click="sendStudentlName">把学生名给App</button>
sendStudentlName(){
			//触发Student组件实例身上的dome事件
			this.$emit('dome',小周,666,888,900)
},
unbind(){
	this.$off('dome') //解绑一个自定义事件
	this.$off(['dome','demo2']) //解绑多个自定义事件
	this.$off() //解绑所有的自定义事件
},
death(){
	this.$destroy() //销毁了当前Student组件的实例,销毁后所有Student实例的自定义事件全都不奏效。
}
APP.vue

第一种
<!-- 通过父组件给子组件绑定一个自定义事件实现:子给父传递数据(第一种写法,使用@或v-on) -->
<Student @dome="getStudentName"/> 
getStudentName(name,...params){
		console.log('App收到了学生名:',name,params)  //小周,[666,888,900]
}

第二种  灵活一点,可以添加更多操作,例如一个定时3s后在执行
<!-- 通过父组件给子组件绑定一个自定义事件实现:子给父传递数据(第二种写法,使用ref) -->
<Student ref="student" @click.native="show"/>
setTimeout(()=>{
	this.$refs.student.on('dome',this.getStudentName)
},3000)

当使用组件子传父时候,直接使用@click="show",在vue中不会是点击事件,他把click当自定义事件去执行了
					  使用@click.native="show",转换一下,就可以直接使用了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值