美文网首页
VUE.$bus事件总线——非父子组件信息传递

VUE.$bus事件总线——非父子组件信息传递

作者: 黑白说程序 | 来源:发表于2020-10-14 09:27 被阅读0次

    $bus主要作用是进行非父子组件信息传递,使用方法如下:

    第一步:在main.js中将$bus绑定到vue原型上

    Vue.prototype.$bus=new Vue()
    

    第二步:在需要传递信息的组件上将一个方法发射出去,并需要在某个条件激活这个方法

    <div @click="busclick"> </div>
    methods(){
    busclick(){
    this.$bus.$emit('busfunction')
    }
    }
    

    第三步:在组件的创建时created中接收emit的方法,并执行回调函数

    created(){
    this.$bus.$on('busfunction',()=>{
     this.$refs.scroll.refresh()
    })
    }
    }
    

    第四步:在beforeDestroy里销毁事件总线,不销毁的话会一直叠加的调用这个方法,如果这个子组件在不同的页面都调用这个子组件,那么在一个父组件this.bus.off("busfunction");会把其他附件也销毁,如果只单独销毁一个父组件,那么需要在后面指定调用函数this.bus.off("busfunction",callback());

      beforDestroy(){
             this.$bus.$off("busfunction");  //当这个组件销毁的时候bus也跟着一起销毁
    }.
      beforDestroy(){
             this.$bus.$off("busfunction",callback());  //当这个组件销毁的时候bus也跟着一起销毁
    }
    

    注意
    如果组件中使用keep-alive缓存组件,beforeDestroy生命周期会不能使用,那么需要在keep-alive生命周期deactivated中销毁事件总线

    相关文章

      网友评论

          本文标题:VUE.$bus事件总线——非父子组件信息传递

          本文链接:https://www.haomeiwen.com/subject/qreipktx.html