uniapp广播
全局事件通信
在UniApp中实现广播功能可通过全局事件机制完成,适用于跨页面或组件通信。使用uni.$emit、uni.$on、uni.$off等方法实现事件的触发、监听与移除。
发送广播(触发事件)
uni.$emit('eventName', { data: 'example' });
接收广播(监听事件)
uni.$on('eventName', (data) => {
console.log('接收数据:', data);
});
移除监听
避免重复监听或内存泄漏,需在页面或组件销毁时移除:

uni.$off('eventName');
页面间通信
若需特定页面间通信,可使用uni.navigateTo传递参数或利用uni.$emit结合页面生命周期。
通过URL传参

uni.navigateTo({
url: '/pages/targetPage?param=value'
});
目标页面接收参数
在onLoad生命周期中获取:
onLoad(options) {
console.log('参数:', options.param);
}
注意事项
- 事件名需唯一,避免冲突。
- 及时清理无用监听,防止内存泄漏。
- 复杂数据建议使用Vuex进行状态管理。
示例场景
发送登录状态广播
// 登录成功后触发
uni.$emit('loginStatus', { isLogin: true });
多个页面监听登录状态
// 页面A
uni.$on('loginStatus', (status) => {
console.log('登录状态更新:', status);
});
// 页面B
uni.$on('loginStatus', (status) => {
this.isLogin = status.isLogin;
});






