uniapp广播
Uniapp 广播功能实现方法
Uniapp 本身没有内置的广播功能,但可以通过以下几种方式实现类似广播的效果:
全局事件总线
在 main.js 中创建一个 Vue 实例作为事件总线:
import Vue from 'vue'
export const EventBus = new Vue()
在需要发送广播的页面:
import { EventBus } from '@/main.js'
EventBus.$emit('eventName', data)
在接收广播的页面:
import { EventBus } from '@/main.js'
EventBus.$on('eventName', (data) => {
console.log('收到广播', data)
})
使用 uni.$emit 和 uni.$on
Uniapp 提供了全局的自定义事件系统:
发送广播:
uni.$emit('eventName', {msg: '广播消息'})
接收广播:
uni.$on('eventName', function(data) {
console.log('收到广播', data.msg)
})
使用本地存储
可以通过 uni.setStorage 和 uni.onStorageChange 实现简单的广播:
设置存储:
uni.setStorage({
key: 'broadcast',
data: {type: 'message', content: '广播内容'}
})
监听存储变化:
uni.onStorageChange((res) => {
console.log('收到广播', res)
})
注意事项
- 全局事件总线方式适合组件间通信,但要注意及时移除监听,避免内存泄漏
- uni.$emit/uni.$on 方式适合页面间通信,但要注意事件名的唯一性
- 本地存储方式适合简单场景,但性能不如事件机制
- 广播接收方需要在页面加载时就注册监听器
跨端兼容性
- 所有方法在 H5、小程序和 App 端都可用
- 小程序端使用 storage 方式时,onStorageChange 需要基础库 2.8.0 以上支持
- App 端使用 storage 方式时,需要监听 plus.storage 的变化







