vue中使用bus进行组件间的通信

在小项目中如果组件间层级嵌套很深的时候可以使用bus来调用其他组件的方法

代码实现:
1、新建一个bus.js文件,如下代码
import Vue from "vue"; export default new Vue();
2、在组件1中

<template>
  <div class="bus-brother1">
    <el-button @click.prevent="handleClick">我是组件1</el-button>
  </div>
</template>

<script>
import bus from "@/store/bus"
export default {
  data() {
    return {

    }
  },
  mounted() {
    bus.$on("busBrotherAlert1", () => {
      this.busBrotherAlert1()
    })
  },
  methods: {
    handleClick () {
      bus.$emit("busBrotherAlert2")
    },
    busBrotherAlert1() {
      alert('我是组件二调用组件一的方法')
    }
  }
}
</script>

3、在组件2中

<template>
  <div class="bus-brother2">
    <el-button @click.prevent="handleClick">我是组件2</el-button>
  </div>
</template>

<script>
import bus from "@/store/bus"
export default {
  data() {
    return {
      
    }
  },
  mounted() {
    bus.$on("busBrotherAlert2", () => {
      this.busBrotherAlert2()
    })
  },
  methods: {
    handleClick() {
      bus.$emit("busBrotherAlert1")
    },
    busBrotherAlert2() {
      alert('我是组件一调用组件二的方法')
    }
  }
}
</script>
posted @ 2021-05-19 15:45  zhongfang99  阅读(184)  评论(0编辑  收藏  举报