vue中$bus的使用和涉及到的问题

Hello大家周末好,最近项目比较忙所以没有及时的更新抱歉,今天给大家讲一vue.bus。使用过的都知道$bus是兄弟之间相互传值的项目中说实话用的地方不算多但是也会用到(每一个领域都是会有坑的呀)。

1:创建$bus文件

   创建一个文件内容如下:import Vue from 'vue'
                        export default new Vue();

2:引入$bus

     main.js: import Bus from './views/bus/bus';  
              Vue.prototype.$bus = Bus;  //注意这里的Vue是我上面引入的vue   import Vue from 'vue'

3:使用传值

 this.$bus.$emit("vaPage",value); //很像父子之间传值的方法

4:接收

    this.$bus.$on("vaPage", v =>{   //vaPage传的时候的key是什么接收就必须是什么
        console.log(v);   //v是传来的值,可以接收多个参数
    })

5:填坑之路

   大家假设一下一个场景现在有3个组件分别是A(父组件),B(子组件),C(子组件)
	       这时候B,C之间的通信就可以用$bus了,比如我在B中进行了操作然后要刷新自己和C组件的dom咱们就可以通过this.$bus.$emit(key,value);  然后C接受this.$bus.$on("key",v=>{});可以在这个组件调用方法什么的你在这里调用方法的时候会发现我只写了一次调用初始化的函数为啥会调用多少而且不刷新页面的时候越来越多,这是需要使用到咱们的生命周期函数beforDestroy在当前组件销毁的时候注销这个$bus的方法:beforDestroy(){this.$bus.$off("val")//关闭$Bus}.

6:总结

 使用$bus的时候在接受bus的组件中别忘了再beforDestroy函数中销毁bus,不销毁的话会一直叠加的调用这个方法:
  beforDestroy(){
         this.$bus.$off("vaPage");  //当这个组件销毁的时候bus也跟着一起销毁
     }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章