Vue3.0总线程bus.js使用(mitt)

vue 3.0 移除了 $ on,$ off 和 $ once 方法,$emit 仍然是现有 API 的一部分,因为它用于触发由父组件以声明方式附加的事件处理程序.那么我们该如何处理简单的兄弟组件间的数据传输呢!
官方推荐使用的第三方库:mitt
1.引入

npm install --save mitt

2.创建bus.js并写入一下代码(建议存放在与main同一目录)

import mitt from "mitt";
const bus = {};
const emitter = mitt();
bus.$on = emitter.on;
bus.$off = emitter.off;
bus.$emit = emitter.emit;

export default bus

3.在main全局引入或者使用的组件中引入

import Bus from './bus.js'/// mitt 总线程引入
Vue.prototype.bus = Bus;

4.使用

A组件
<template>
  <div>
    <div @click="testFn">
      测试一下
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
    }
  },
  methods: {
    testFn() {
      // 如果有参数传入则this.bus.$emit('getParams',params)
      this.bus.$emit('getParams')
    }
  }
}
</script>

B组件
<template>
  <div>
    {{val}}
  </div>
</template>

<script>
export default {
  data() {
    return {
      val: 1
    }
  },
  methods: {},
  mounted() {
    this.bus.$on('getParams', (params) => {
      console.log(params)
      this.val += 1
    })
  }
}
</script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值