首页 >

深入了解Vue组件中的自定义事件

web前端|Vue.js深入了解Vue组件中的自定义事件
Vue,组件,自定义事件
web前端-Vue.js
什么是组件自定义事件?本篇文章带大家深入了解下Vue组件中的自定义事件,聊聊自定义事件注意点,希望对大家有所帮助!
html5问卷调查源码,vscode没有找到编辑器,ubuntu启动tools,tomcat线程数怎么调,图片爬虫实例,php个人博客网站模板,武安直销seo关键词优化lzw
pin码 源码,vscode怎么分屏写代码的,ubuntu安装ncat,tomcat 分64位,爬虫菜鸟网络,php直销分红源码,郑州线上营销郑州seo优化排名lzw
组件的自定义事件是一种组件间的通信方式,它适用于子组件向父组件传递数据或行为。(学习视频分享:vuejs教学)
java web源码,ubuntu双系统图片,如何把tomcat卸干净,c 爬虫html,php视频上传技术,平度seo优化按天扣费多少钱lzw

原理图

组件的自定义事件注意点:

1.组件的自定义事件实现的就是子组件向父组件通信的功能,所以,自定义事件的绑定动作需要在父组件中完成

2.组件的自定义事件的触发动作需要在子组件中完成,给谁绑定的事件,就找谁触发

在了解组件的自定义事件之前,我们也了解过propsprops也能实现子组件向父组件通信,接下来,我将从props的方式过渡到组件的自定义事件,以便大家能够更好的理解组件的自定义事件,也可以对比这两种方式存在的差异和相似之处

通过props实现组件间通信

App.vue中:

......import TestA from './components/TestA'	export default {		name:'App',		components:{TestA},		data(){			return{				msg:'你好呀'			}		},		methods:{			getName(name){				console.log('App组件收到了数据', name)			},		},	}

代码片段中getName()方法中的name参数用于接收子组件传递过来的参数

TestA.vue:

......export default {    name:'TestA',    //接收父组件传递过来的props    props:["getName"],    data(){        return{            name:'路飞',            age:18        }    },    methods:{        sendName(){            //点击按钮后,触发此方法,传递name给父组件            this.getName(this.name)        }    }}

以上是用props实现的子组件向父组件传递数据

效果图如下:

页面初始化效果:

点击按钮后:

通过图上可以看出,当点击按钮之后,控制台输出了父组件收到的数据,子组件通过props的方式向父组件传递了数据

通过组件的自定义事件实现组件间通信

首先第一步,就是要给组件绑定一个自定义事件,文章开始就说,绑定自定义事件是在父组件中完成的:

其次,在子组件中,需要对自定义事件进行触发,完成组件自定义事件通信:

效果图如下:

页面初始化效果:

点击按钮后:

通过图上可以看出,当点击按之后,控制台输出了父组件收到的数据。

通过以上两种通信方式,我们可以发现,子组件通过props方式向父组件传递数据,前提是父组件要给子组件传递一个回调函数,子组件接收之后,才能向父组件传递数据,而组件的自定义事件只需调用 $emit 方法对指定自定义事件进行触发,即可向父组件传递数据。

组件自定义事件其他知识点

自定义组件绑定的第二种方式

App.vue:

	

{{msg}}

import TestA from './components/TestA'import TestB from './components/TestB' export default { name:'App', components:{TestA, TestB}, data(){ return{ msg:'你好呀' } }, methods:{ getName(name){ console.log('我收到了数据', name) }, send(name){ console.log("send被调用了", name) } }, mounted(){ this.$refs.testb.$on('demo', this.send); } }.app{ background-color: rgb(162, 255, 139); padding: 15px;}

通过ref属性拿到TestB组件组件的实例对象(vc),在组件挂载完成之后(mounted)使用this.$refs.组件名.$on('自定义事件名', 回调函数)完成对子组件自定义事件的绑定,同样也能实现效果。

而且,使用这种方式比较灵活,能完成一些操作,比如一次性自定义事件,延迟,判断等等。

一次性自定义事件

v-on:事件名.once="XXXX或者this.$refs.student.$once("事件名", 事件内容)

自定义事件的解绑

当我们使用完自定义事件后,可以解绑自定义事件,这样做的好处是,尽量降低对程序性能的占用,提高程序运行的效率

自定义的解绑动作也是在子组件中进行,简单来说也就是,给谁绑定的就找谁解绑

TestB中

  
籍贯:{{native}} 详细地址:{{adress}}
export default { name:'TestB', data(){ return{ native:'东海', adress:'东海风车村' } }, methods:{ sendNative(){ this.$emit('demo',this.native) }, //解绑demo自定义事件 noBand(){ this.$off('demo'); } } }div{ background-color: aquamarine; padding: 15px; margin-top: 5px;}

还有一个点就是,假若有很多自定义事件需要解绑,那可以这么写:

{方法体内    this.$off();}

直接不用传递任何参数,这样写的话,只要是给此组件绑定的任何自定义事件都会解绑

总结

以上内容就是组件的自定义事件的使用,自定义事件虽然在Vuejs中不是一个非常重要的点,但是也是一个实际开发中比较常用的点,在进行某些业务操作时,使用自定义事件可能会节省开发时间以及优化代码,减少代码冗余量,组件自定义事件的具体操作还要看所处的业务逻辑和行为是什么。

如果觉得内容不错的话,记得点赞收藏~~~

(学习视频分享:web前端开发)


深入了解Vue组件中的自定义事件
  • js自定义事件及事件交互原理概述(一)【javascript】
  • js自定义事件及事件交互原理概述(一)【javascript】 | js自定义事件及事件交互原理概述(一)【javascript】 ...

    深入了解Vue组件中的自定义事件
  • 详解javascript实现自定义事件【javascript】
  • 详解javascript实现自定义事件【javascript】 | 详解javascript实现自定义事件【javascript】 ...

    深入了解Vue组件中的自定义事件
  • jQuery实现自定义事件办法【jquery】
  • jQuery实现自定义事件办法【jquery】 | jQuery实现自定义事件办法【jquery】 ...