文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一文详解Vue-组件自定义事件(绑定和解绑)

2023-05-18 20:16

关注

组件自定义事件(绑定)

像click,change这些都是js的内置事件,我们可以直接使用,本次我们学习自己根据需求打造全新的事件,但是js内置的是给html元素用的,本次的自定义事件是给组件用的

注意:组件上也可以绑定原生DOM事件,需要使用native修饰符,销毁组件实例也会销毁组件对应的自定义事件

下面通过案例说明

1 编写案例

如图,我有三个组件,分别是学生,学校和app,由app管理其他两个组件,这时候想给学校组件一个按钮,点击的时候会把学校名称交给app

2 props实现

通过父组件给子组件传递函数类型的props实现:子给父传递数据

我们可以子组件使用props给父组件传递,所以首先在app里面定义函数,然后通过props进行传递使用

3 自定义事件实现方式1

如果我还想继续给student一个按钮,点击的时候把学生姓名给app组件呢?这次不用props了,使用自定义事件实现

通过父组件给子组件绑定自定义事件实现:子给父传递数据

使用$emit触发组件身上的自定义事件,参数是事件名称

当然,使用@简写形式替代v-on也是可以的,我这里没有简写,事件名称和回调名称可以相同的

也是可以完成的

4 自定义事件实现方式2

除了上述的方式,还有另外一种方式可以实现,使用ref,写一个加载钩子函数,使用$on

这种写法虽然麻烦,需要写钩子函数,但是它也更加的灵活

效果都是一样的

如果验证它更加的灵活呢?比如现在有这样的一个需求,需要3秒后才能加载事件,这时候使用第一种写法就写不了,但是第二种写法就可以

5 只能触发一次事件

有的场景,我想要自定义事件触发一次后就不再触发了,这时候就不能使用��这个���了,应该使用on这个api了,应该使用once

如果不是这种写法呢?也是一样的道理,在事件名称后.once即可

6 多个参数传递

自定义事件也是可以支持传递多个参数的,使用逗号拼接即可

但是一般多个参数不会这么写,而是使用es6里面的...params接收,他会把多个参数拼接成一个数组

组件自定义事件(解绑)

上面介绍了绑定自定义事件,接下来就是对应的解绑自定义事件

1 解绑一个事件

使用$off解绑,参数就是事件名称,这种写法只支持解绑一个事件

那么多个该如何操作呢?

2 解绑多个事件

比如现在有两个自定义事件

使用$off解绑,参数是一个数组,里面是参数名称

3 解绑全部事件

还有一种更加暴力的写法,使用off方法什么也不传,这便是解绑全部事件

组件的自定义事件总结


<Demo ref="demo"/>

......

mounted(){

this.$refs.xxx.$on('atguigu',this.test)

}

以上就是一文详解Vue-组件自定义事件(绑定和解绑)的详细内容,更多关于Vue 组件自定义的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯