微信小程序事件通道(事件总线)是用于在小程序多个页面或组件之间通过触发事件进行通信的机制。
通过事件通道,一个页面或组件可以向事件通道发送一个事件,其他页面或组件可以通过监听该事件来获取消息并进行相应处理。
使用事件通道需要先在 app.js 中初始化事件总线:
App({ onLaunch() { this.eventChannel = this.getEventChannelForPage(); }, })
在需要发送事件的页面或组件中,通过wx.navigateTo或wx.redirectTo方法跳转到目标页面或组件时,传入events参数,并将它赋值为事件通道对象:
wx.navigateTo({ url: '/pages/targetPage/index', events: { someEvent: data => { // 收到事件,并执行相应操作 } } });
在目标页面或组件中,通过onLoad生命周期函数获得事件通道对象,并绑定事件处理函数:
onLoad(options) { const eventChannel = this.getOpenerEventChannel(); eventChannel.on('someEvent', data => { // 处理事件 }); }
当事件发生时,通过调用触发事件的方法,向事件通道中发送事件:
// 触发事件 this.eventChannel.emit('someEvent', data);
需要注意的是,在使用事件通道时,传递的数据类型应该符合小程序的数据格式要求,避免出现无法解析的数据格式或类型错误。同时,在事件通道中,建议使用常量或字符串作为事件名称,便于开发人员进行维护和管理。