当前位置:首页 > 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内置了全局事件方法,适用于页面间通信:
发送事件:

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

监听事件:

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

移除监听:

uni.$off('updateCart')

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

使用Vuex进行状态管理广播

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

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

组件中触发:

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

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

uniapp广播

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

注意事项

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

适用场景对比

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

标签: uniapp
分享给朋友:

相关文章

精通uniapp

精通uniapp

掌握UniApp的基础知识 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发多端部署(如H5、小程序、App等)。核心概念包括Vue语法、组件化开发、条件编译(针对不同平台适配)以及U…

uniapp 用法

uniapp 用法

uniapp 基本概念 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持编译到 iOS、Android、H5 及小程序等多端。其核心特点是“一次开发,多端发布”,通过条件编译实现平台差异…

甜uniapp

甜uniapp

甜uniapp的定义 甜uniapp并非官方术语,可能是对uniapp开发中“高效、便捷、愉悦”体验的形容,或特定场景下的优化方案。通常指通过技巧、插件或架构设计提升uniapp开发效率和用户体验。…

uniapp多行注释

uniapp多行注释

uniapp多行注释方法 在UniApp中,多行注释的语法与JavaScript一致,可以使用以下两种方式实现多行注释。 方法一:使用/* */符号 通过/*开始注释,*/结束注释,中间的内容会被视…

uniapp开发

uniapp开发

uniapp开发简介 uniapp(DCloud出品)是一款基于Vue.js的跨平台开发框架,支持一次开发,多端发布(iOS、Android、Web、小程序等)。其核心优势在于代码复用率高,开发效率高…

uniapp删除

uniapp删除

uniapp删除数据的方法 在uniapp中删除数据通常涉及前端操作和与后端API的交互。以下是常见的几种删除数据的方式: 前端数据删除 使用splice方法从数组中删除指定元素: let lis…