首页 > 其他分享 >vue中兄弟组件传值event bus被多次触发以及踩过的坑

vue中兄弟组件传值event bus被多次触发以及踩过的坑

时间:2023-02-14 11:12:59浏览次数:48  
标签:vue bus 点击 销毁 事件 组件 event 传值

传值方式:兄弟组件传值的时候,使用的是 this.$bus.$emit 触发事件和this.$emit.on 监听事件。

业务bug:点击按钮切换兄弟组件,再切换的过程$eventBus出发了多次。

原因:

事件订阅是通过$eventBus对象完成的 与组件无关

后果:如果不移除事件监听 并且会造成内存泄漏

 

分析:

1.当点击销毁子组件的时候 子组件还能接收到数据吗?对应的回调函数还能在执行吗?

答案是 会,事件订阅功能是$eventBus对象完成的,与组件无关,当你点击销毁后 再点击创建又会多了一个订阅事件,依次类推每次点击新建后都会多一个订阅事件。

通过v-if 销毁和重新创建来看通过数据发现 销毁后并没有对空间进行释放

解决方案: 在子组件销毁后进行取消订阅事件

 destroyed() {         this.$bus.$off('事件名称') }

标签:vue,bus,点击,销毁,事件,组件,event,传值
From: https://www.cnblogs.com/zhaohui9527/p/17118944.html

相关文章

  • vue基础
     vue是一套用于构建用户界面的渐进式(vue可以自底向上逐层的应用;由一个轻量小巧的核心库到可以引入各式各样的vue插件)JavaScript框架。 vue的特点:1.采用组件化模式......
  • git bash窗口创建vue项目, 箭头切换没起作用?
    1、解决方法:一、直接在命令窗口创建(Win+R),输入cmd二、使用winpty命令+.cmd,如:winptynpm.cmdcreatevite@latest  ......
  • vue为什么v-for的优先级比v-if的高?
    前言有时候有些面试中经常会问到v-for与v-if谁的优先级高,这里就通过分析源码去解答一下这个问题。下面的内容是在当我们谈及v-model,我们在讨论什么?的基础上分析的,所以......
  • 前端一面必会vue面试题总结
    Vue模板编译原理Vue的编译过程就是将template转化为render函数的过程分为以下三步第一步是将模板字符串转换成elementASTs(解析器)第二步是对AST进行静态节......
  • new Vue的时候到底做了什么
    Vue加载流程1.初始化的第一阶段是Vue实例也就是vm对象创建前后:首先Vue进行生命周期,事件初始化发生在beforeCreate生命周期函数前,然后进行数据监测和数据代理的初始化,也就......
  • 前端二面经典vue面试题总结
    Vue加载流程1.初始化的第一阶段是Vue实例也就是vm对象创建前后:首先Vue进行生命周期,事件初始化发生在beforeCreate生命周期函数前,然后进行数据监测和数据代理的初始化,也就......
  • Nginx配置文件----- 全局块和event块
    #全局块#指定可以运行nginx服务的用户和用户组,只能在全局块配置#usernobody;#nginx进程,一般数值为cpu核数worker_processes1;#错误日志存放目录#error_loglogs/error.lo......
  • 转载:Vue+springboot集成PageOffice实现在线编辑Word、excel文档
    说明:   PageOffice是一款在线的office编辑软件,帮助Web应用系统或Web网站实现用户在线编辑Word、Excel、PowerPoint文档。可以完美实现在线公文流转,领导批阅,盖章。......
  • vue3watch
    vue3watch监视不到对象里面的oldValueref定义的基本类型响应式数据可以监视ref定义的多个基本类型响应式数据watch([name,age],(newV,oldV)=>{console.lo......
  • Vue的v-html指令说明,含案例
    v-html指令总结:1、作用:向指定节点中渲染包含html结构的内容2、与插值语法的区别:(1)v-html会替换掉节点中所有的内容,{{}}则不会(2)v-html可以识别html结构3、特别注意:(1......