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

 更新时间:2023年05月05日 09:46:19   作者:小花皮猪  
这篇文章主要介绍了Vue-组件自定义事件的绑定和解绑,文中有详细的图文实例,对学习或工作有一定的参考价值,需要的小伙伴可以阅读下

组件自定义事件(绑定)

像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方法什么也不传,这便是解绑全部事件

组件的自定义事件总结

  • 一种组件间通信的方式,适用于:子组件 ===> 父组件

  • 使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(事件的回调在A中)。

  • 绑定自定义事件:

  • 第一种方式,在父组件中:<Demo @atguigu="test"/><Demo v-on:atguigu="test"/>

  • 第二种方式,在父组件中:

<Demo ref="demo"/>

......

mounted(){

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

}
  • 若想让自定义事件只能触发一次,可以使用once修饰符,或$once方法。

  • 触发自定义事件:this.$emit('atguigu',数据)

  • 解绑自定义事件this.$off('atguigu')

  • 组件上也可以绑定原生DOM事件,需要使用native修饰符。

  • 注意:通过this.$refs.xxx.$on('atguigu',回调)绑定自定义事件时,回调要么配置在methods中,要么用箭头函数,否则this指向会出问题!

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

相关文章

  • VUE实现Studio管理后台之鼠标拖放改变窗口大小

    VUE实现Studio管理后台之鼠标拖放改变窗口大小

    这篇文章主要介绍了VUE实现Studio管理后台之鼠标拖放改变窗口大小 的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的工作或学习具有一定的参考价值,需要的朋友可以参考下
    2020-03-03
  • vue离开页面时如何销毁定时器

    vue离开页面时如何销毁定时器

    这篇文章主要介绍了vue离开页面时如何销毁定时器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 6种Vue中常用数据加密方式的使用详解

    6种Vue中常用数据加密方式的使用详解

    在Vue.js项目中,你可能需要执行数据加密以确保敏感信息的安全,这篇文章为大家整理了Vue中常用的6种数据加密方式的使用,需要的小伙伴可以参考下
    2024-03-03
  • Vue实现登录功能全套超详细讲解(含封装axios)

    Vue实现登录功能全套超详细讲解(含封装axios)

    这篇文章主要给大家介绍了关于Vue实现登录功能(含封装axios)的相关资料,Vue是现在前端最流行的框架之一,作为前端开发人员应该要熟练的掌握它,需要的朋友可以参考下
    2023-10-10
  • vue中对接Graphql接口的实现示例

    vue中对接Graphql接口的实现示例

    本文主要介绍了vue中对接Graphql接口的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • vue+element自定义查询组件

    vue+element自定义查询组件

    这篇文章主要为大家详细介绍了vue+element自定义查询组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 解决vue中post方式提交数据后台无法接收的问题

    解决vue中post方式提交数据后台无法接收的问题

    今天小编就为大家分享一篇解决vue中post方式提交数据后台无法接收的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue动态加载SVG文件并修改节点数据的操作代码

    vue动态加载SVG文件并修改节点数据的操作代码

    这篇文章主要介绍了vue动态加载SVG文件并修改节点数据的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • el-table 选中行与复选框相互联动的实现步骤

    el-table 选中行与复选框相互联动的实现步骤

    这篇文章主要介绍了el-table 选中行与复选框相互联动,分为两步,第一步点击行时触发复选框的选择或取消,第二步点击复选框时触发相应行的变化,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • 基于vue-simplemde实现图片拖拽、粘贴功能

    基于vue-simplemde实现图片拖拽、粘贴功能

    这篇文章主要介绍了基于vue-simplemde实现图片拖拽、粘贴功能,需要的朋友可以参考下
    2018-04-04

最新评论