实现各个组件之间(父子,兄弟)的通信可以使用vuex和bus事件总线,使用bus总线实现通信的方法如下:
微信小程序内
this.$bus.emit('addressEvent', event.currentTarget.dataset.item)
子组件方法内定义,并传递向父组件的数据,同理兄弟,父子,那个是传值的就先定义方法名和传递的数据
父组件接收
data 里面定义 addressEvent:null
//第一个参数为标志变量,第二个参数为通信的值 //传递数据
//加入需要传递的方法内
this.addressEvent=this.$bus.on('addressEvent',(data:any)=>this.addressReturn(data))
//方法接收数据
onLoad(){
addressReturn(data){}
}
onUnload () {
//移除绑定
this.$bus.off(this.addressEvent)
this.$bus.off('addressEvent')
}
vue使用bus
bus
utils - bus.js
import Vue from 'vue'
const bus = new Vue()
export default bus
一、传值
发送信息
import bus from '@/utils/bus'
第一个参数为标志变量,第二个参数为通信的值
bus.$emit('message', 'hello');
接收信息
import bus from '@/utils/bus'
第一个参数为标志变量,第二个参数中的e为通信的值
bus.$on('message', (e) => {
console.log(e)
})
二、调用方法
一个组件(A)调用另一个组件(B)的方法
B组件的方法
import bus from '@/utils/bus'
mounted () {
bus.$on('testA', this.testA)
},
testA () {
console.log('由A组件调用')
},
A组件调用
import bus from '@/utils/bus'
mounted () {
bus.$emit('testA')
},