Vue中$emit的用法

一句话理解:

子组件可以使用$emit触发父组件的自定义监听

例如

子组件 item.vue

<template>
    <button @click="$emit('test', 5)">
          触发父组件的test监听, 参数为5
    </button>
</template>

<script>
// ...
</script> 

父组件 xxx.vue

<template>
	<div>
		<item @test="log"/>    //监听test
	</div>
</template>


<script>
export default {
    
    // ...

	methods: {
		log(arg) {
			console.log(arg)
		}
	}

    // ...
}
</script>

Vue官方给出的 Todo App 例子中就有使用到 $emit Simple Todo App with Vue - CodeSandbox

如果需要传递多个参数,可以利用对象

<template>
    <button @click="$emit('test', {a: 1, b: true})">
          触发父组件的test监听
    </button>
</template>

<script>
// ...
</script> 

等同于

<template>
    <button @click="send()">
          触发父组件的test监听
    </button>
</template>

<script>
export default {

    // ...

    methods:{
        send() {
            let data = {
                a: 1,
                b: true
            }
            this.$emit('test', data)
        }
    }

    // ...

}
</script> 

也可以不传参

<template>
    <button @click="$emit('test')">
          触发父组件的test监听
    </button>
</template>

<script>
// ...
</script> 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值