经常听说组件之间传参有一种方式是eventbus,常用于兄弟组件之间传参。但是我发现不只是兄弟之间可以用呀,为什么会被说“用与兄弟之间传参”呢?
1.首先来说说eventbus,字面意思有点“事件汽车”,有点大街上或者路边的快递小车车,谁需要寄件了找他,谁需要收件了会接到他的电话。
我们需要一辆小车车:
// event-bus.js eventbus是一个不具备dom的组件
import Vue from 'vue'
export const EventBus = new Vue()
不推荐全局 这种 Vue.prototype.$bus = new Vue(),按需比较轻便
2.某个组件有内容要$emit发送出去,寄件
//template中
<button @click="sendMsg()">我是按钮</button>
//script中
import {EventBus} from "../../event-bus"
// ...
methods:{
sendMsg(){
EventBus.$emit('amsg','来自hello的消息')
}
}
3.另一个组件要接收内容,收件,保持手机畅通$on
//created
EventBus.$on('amsg',(msg)=>{
this.msg=msg
})
// this.msg就拿到msg的值了
4.第一个组件里然后小车车腾空,走人,$off
//beforeDestroy
EventBus.$off('amsg',this.sendMsg)
太方便而容易滥用导致加大维护难度所以局限定位到了“常用于兄弟传参”?