当前位置:首页 > uni-app

uniapp广播

2026-02-05 19:22:41uni-app

使用全局事件总线实现广播

在uni-app中,可以通过Vue的EventBus实现组件间通信。创建一个单独的eventBus.js文件导出Vue实例:

// eventBus.js
import Vue from 'vue'
export default new Vue()

发送广播:

import eventBus from './eventBus.js'
eventBus.$emit('eventName', data)

接收广播:

import eventBus from './eventBus.js'
eventBus.$on('eventName', (data) => {
  console.log('接收数据:', data)
})

销毁监听:

eventBus.$off('eventName')

通过uni.$on和uni.$emit实现跨页面通信

uni-app内置了全局事件方法,适用于页面间通信:
发送事件:

uniapp广播

uni.$emit('updateCart', { goodsId: 123 })

监听事件:

uni.$on('updateCart', (data) => {
  console.log('购物车更新:', data)
})

移除监听:

uni.$off('updateCart')

注意:监听需在页面卸载时手动移除。

uniapp广播

使用Vuex进行状态管理广播

对于复杂状态共享,可通过Vuex的mutationsactions触发全局状态变更:

// store.js
const store = new Vuex.Store({
  state: { message: '' },
  mutations: {
    setMessage(state, payload) {
      state.message = payload
    }
  }
})

组件中触发:

this.$store.commit('setMessage', '新消息')

组件中监听:
通过计算属性实时获取状态变化:

computed: {
  message() {
    return this.$store.state.message
  }
}

注意事项

  • 事件命名避免冲突,建议使用模块前缀(如user/login)。
  • 页面销毁时需清理事件监听,防止内存泄漏。
  • 高频事件考虑使用防抖或节流优化性能。

适用场景对比

  • EventBus/Vue全局事件:适合简单组件通信。
  • uni.$emit/uni.$on:适合跨页面非持久化通信。
  • Vuex:适合需要持久化或复杂状态管理的场景。

标签: uniapp
分享给朋友:

相关文章

uniapp删除

uniapp删除

卸载 uniapp 项目依赖 在项目根目录下执行以下命令,移除 node_modules 和依赖锁文件: rm -rf node_modules package-lock.json 如需清理全…

uniapp怎么使用

uniapp怎么使用

安装与开发环境搭建 下载HBuilderX作为开发工具,这是官方推荐的IDE,内置uniapp项目模板和调试工具。安装后通过新建项目选择uniapp模板,支持Vue.js语法。确保Node.js环境已…

uniapp 消息推送

uniapp 消息推送

uniapp 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

uniapp应用市场

uniapp应用市场

uniapp应用市场概述 Uniapp作为跨平台开发框架,支持将代码编译到iOS、Android、Web及各类小程序平台。其应用市场(插件市场)是开发者获取扩展插件、模板、组件的重要资源库,涵盖UI组…

uniapp发布到应用商店

uniapp发布到应用商店

发布到苹果App Store 确保开发者账号已注册并加入Apple Developer Program,年费99美元。在Xcode中生成iOS发布证书(.p12)和描述文件(Provisioning…

uniapp前端项目

uniapp前端项目

Uniapp 前端项目开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App 等)。以下是关于 Uniapp 前端项目的关键信息:…