美文网首页
vue - EventBus

vue - EventBus

作者: 梁庄十年 | 来源:发表于2021-12-14 22:31 被阅读0次

1.eventBus适用场景

目前了解到的eventbus一般比较适用于兄弟组件之间的通信; 两个兄弟组件有一个共同的父组件;
注意事项:
1 eventbus需要先通过on注册事件, 然后才能通过emit触发;
2 触发事件的组件在销毁时,建议在destoryed生命周期中通过$off销毁事件

2. 代码示例-亲测有效

  1. 兄弟组件A
<template>
  <div class="sibling-con">
    <h1>sibling</h1>
    <el-button @click="submitData">submit Data</el-button>
  </div>
</template>
<script>
export default {
  name: 'sibling',
  data () {
    return {
      name: 'hello world'
    }
  },
  methods: {
    submitData() {
      this.$EventBus.$emit('handleName', this.name); // 触发点击事件时,通过$emit向兄弟组件传递值;
    }
  },
  destroyed() {
    this.$EventBus.$off('handleName'); // 组件销毁之前销毁监听事件
  }
}
</script>
<style lang="scss" scoped>
.sibling-con {
  height: 20%;
  background: #fff;
}
</style>

  1. 兄弟组件B
<template>
  <div class="sibling1-con">
    <h1>sibling1</h1>
    <p>{{ receiveValue }}</p>
  </div>
</template>
<script>
export default {
  name: 'sibling1',
  data () {
    return {
      receiveValue: '',
    }
  },
  created () {
    // 兄弟组件中注册handleName事件,从而获取到传递的值;
    this.$EventBus.$on('handleName', (params) => { 
      console.log('params: ', params);
      this.receiveValue = params;
    })
  }
}
</script>
<style lang="scss" scoped>
.sibling1-con {
  height: 20%;
  background: #fff;
}
</style>
  1. 公用父组件
<template>
  <div class="common-con">
    <h1>common</h1>
    <p>子组件通过$emit传递的值: {{siblingEmitVale}}</p>
    <Sibling></Sibling>
    <Sibling1></Sibling1>
  </div>
</template>
<script>
import Sibling from './sibling.vue';
import Sibling1 from './sibling1.vue';
export default {
  name: 'common',
  components: {
    Sibling,
    Sibling1,
  },
  data () {
    return {
      siblingEmitVale: '',
    }
  },
  created () {
   //  在父组件中也可以通过eventBus接收到子组件中的传值
    this.$EventBus.$on('handleName', (params) => {
      console.log('params: ', params);
      this.siblingEmitVale = params;
    })
  }
}
</script>
<style lang="scss" scoped>
.common-con {
  height: 100%;
  background: #fff;
}
</style>
  1. 页面效果


    点击触发

相关文章

  • eventBus传值、js或html调用vue方法、父子方法调用

    使用eventBus传值 新建eventBus.jsimport Vue from 'vue'// 用于监听、触发...

  • vue中bus.$on事件被多次绑定

    vue中eventbus被多次触发(vue中使用eventbus踩过的坑)【bus.$on事件被多次绑定】 问题描...

  • vue中使用eventBus

    vue2 方法一: //eventBus.jsimport Vue from 'vue'; export cons...

  • EventBus

    EventBus的简介 EventBus 又称为事件总线。在Vue中可以使用 EventBus 来作为沟通桥梁的概...

  • 兄弟组件通讯

    eventBus 定义eventBus eventBus的原理是引入一个新的vue对象,分别调用这个对象的事件发布...

  • 一个eventBus

    vue实现一个eventBus eventBus应该有些听过,其实就是一个事件发布订阅的功能。vue提供了实例方法...

  • eventBus+vue-router+element写tab标

    组件页tabsCom.vue eventBus.js router.js App.vue

  • vue兄弟组件之间通信--eventBus

    原文地址 eventBus eventBus单独的事件中心,用来管理组件之间的通信。 由于 Vue 实例实现了一个...

  • VUE - EventBus

    vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数据给子...

  • vue - EventBus

    1.eventBus适用场景 目前了解到的eventbus一般比较适用于兄弟组件之间的通信; 两个兄弟组件有一个共...

网友评论

      本文标题:vue - EventBus

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