uniapp $on
在UniApp中,$on是用于监听全局事件的API,通常与uni.$emit配合使用实现跨页面通信。以下是具体用法和注意事项:

监听全局事件
使用uni.$on(eventName, callback)监听自定义事件。eventName为事件名称,callback是触发时的回调函数。例如:

// 在页面或组件中监听
uni.$on('updateData', (data) => {
console.log('接收到数据:', data);
});
触发事件
通过uni.$emit(eventName, data)触发事件并传递数据:
// 在任何地方触发事件
uni.$emit('updateData', { message: 'Hello' });
移除监听
为避免内存泄漏,需在页面或组件销毁时移除监听:
// 页面卸载时移除
onUnload() {
uni.$off('updateData');
}
注意事项
- 事件名需唯一,避免冲突。
$on通常用于跨页面通信,同一页面内优先考虑props或vuex。- 多次调用
$on会重复监听同一事件,需确保及时清理。
示例场景
// A页面触发事件
uni.$emit('loginSuccess', { userId: 123 });
// B页面监听
uni.$on('loginSuccess', (res) => {
console.log('用户ID:', res.userId);
});
通过合理使用$on和$emit,可实现灵活的跨组件或页面通信。






