标签:监听 事件 组件 import eventBus emit 传值
事件总线:
就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件
1.创建全局空Vue实例:eventBus
import Vue from 'vue';
const eventBus= new Vue() //创建事件总线
export default eventBus;
2.具体页面使用$emit发布事件 - 传递值
import eventBus from '@u/eventBus'
eventBus.$emit('send',‘hello’)
3.具体页面使用$on订阅事件 - 接收组件值
import eventBus from '@u/eventBus'
eventBus.$on('send', msg => {
console.log(msg) //控制台输出 hello
}
注意:\(on先进行监听,一旦\)emit发布事件后所有组件都可以\(on监听到事件。所以传递参数的时候一定已经先进行了监听才能得到参数。比如在父组件中\)emit事件放在mounted钩子函数中,等待子组件创建并\(on开始监听事件后再去触发\)emit发布事件。
4.$off()移除事件监听
import eventBus from '@u/eventBus'
eventBus.$off('send')
事件订阅功能\(on是\)eventBus对象完成的,与组件无关,如果用v-if销毁子组件的时候,会形成闭包,造成内存泄露,所有要在销毁组件的时候进行取消监听事件
标签:监听,事件,组件,import,eventBus,emit,传值 来源: https://www.cnblogs.com/spotlighter/p/16320129.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。