小程序的 eventBus 方法
时间: 2024-12-20 13:21:08 浏览: 3
小程序的 `eventBus` 是一种事件总线的设计模式,它允许组件之间通过传递事件来进行通信,而不是直接依赖于父子组件间的硬编码数据传递。在小程序中,没有内置的 `eventBus` 类,但你可以自定义一个简单的事件中心,通常的做法是创建一个全局变量或者在某个单例组件中维护。
以下是创建和使用 `eventBus` 的基本步骤:
1. 定义一个 `EventCenter.js` 或类似文件:
```javascript
// EventCenter.js
Page({
data: {
eventCenter: {}
},
addEventListener(eventName, callback) {
this.data.eventCenter[eventName] = callback;
},
emitEvent(eventName, data) {
if (this.data.eventCenter[eventName]) {
this.data.eventCenter[eventName](data);
}
}
})
```
2. 使用 `addEventListener` 注册监听器:
```javascript
Page({
onReady() {
wx.getSetting({
success(res) {
this.globalData.isLogin = res.authSetting['scope.userInfo'];
// 注册登录状态改变的监听
EventCenter.addEventListener('loginStatusChange', this.handleLoginStatusChange);
}
});
},
handleLoginStatusChange(data) {
console.log('用户登录状态已改变:', data);
}
})
```
3. 通过 `emitEvent` 发布事件:
```javascript
// 当用户授权登录成功时
this.emitEvent('loginStatusChange', { isLogin: true });
```
阅读全文