$on和$emit的执行机制
时间: 2023-08-30 09:08:35 浏览: 35
$on和$emit是Vue实例的自定义事件监听器和触发器,它们的执行机制如下:
- $on:该方法用于监听自定义事件。当Vue实例触发该自定义事件时,会自动执行该事件对应的回调函数。该方法的语法为:`vm.$on(event, callback)`,其中`event`表示自定义事件名称,`callback`表示回调函数。
- $emit:该方法用于触发自定义事件。当Vue实例触发该自定义事件时,会自动执行该事件对应的回调函数。该方法的语法为:`vm.$emit(event, [...args])`,其中`event`表示自定义事件名称,`args`表示传递给回调函数的参数。
在Vue实例中,$on方法通常用于在组件之间传递数据或通知,$emit方法则用于触发自定义事件并传递参数。当Vue实例触发自定义事件时,会自动执行该事件对应的回调函数,并将传递的参数作为回调函数的参数传递进去。需要注意的是,如果没有对应的回调函数监听该自定义事件,则不会有任何操作执行。
相关问题
vue3 $emit $on
Vue 3是一种流行的JavaScript框架,用于构建用户界面。它提供了一种响应式的数据绑定机制,使得数据的变化可以自动更新到视图上。$emit和$on是Vue 3中用于实现组件之间通信的两个方法。
$emit是一个用于触发自定义事件的方法。在一个组件中,你可以使用$emit方法来触发一个自定义事件,并传递一些数据给其他组件。其他组件可以通过$on方法来监听这个自定义事件,并在事件触发时执行相应的逻辑。
$on是一个用于监听自定义事件的方法。在一个组件中,你可以使用$on方法来监听一个自定义事件,并在事件触发时执行相应的逻辑。当其他组件使用$emit方法触发这个自定义事件时,监听该事件的组件将会执行相应的逻辑。
使用$emit和$on可以实现父子组件之间的通信,以及非父子组件之间的通信。通过自定义事件的方式,不同组件之间可以进行灵活的数据传递和交互。
this.$eventBus.$emit
this.$eventBus.$emit是Vue.js中的一种事件机制,用于在组件之间进行通信。通过该方法,一个组件可以向其他组件发送自定义事件,并传递数据。
具体来说,this.$eventBus是一个Vue实例,它可以作为一个中央事件总线,用于在不同的组件之间传递消息。$emit方法用于触发一个自定义事件,并将数据作为参数传递给订阅该事件的组件。
使用this.$eventBus.$emit的步骤如下:
1. 在Vue实例中创建一个事件总线:在main.js或者根组件中,可以通过Vue.prototype.$eventBus = new Vue()来创建一个全局的事件总线。
2. 在发送事件的组件中使用this.$eventBus.$emit(eventName, data)来触发事件。eventName是事件名称,data是要传递的数据。
3. 在接收事件的组件中使用this.$eventBus.$on(eventName, callback)来监听事件。eventName是要监听的事件名称,callback是事件触发时执行的回调函数。
注意事项:
- 使用this.$eventBus.$emit发送事件时,需要保证接收事件的组件已经被创建并且监听了相应的事件。
- 在不需要时,应该及时销毁事件总线,避免内存泄漏。