当前位置:首页 > 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中实现支付功能通常需要对接第三方支付平台(如微信支付、支付宝支付等)。以下是基于微信支付和支付宝支付的通用实现流程。 微信支付实现步骤 1. 配置支付权限 在微信开放…

uniapp树形选择

uniapp树形选择

uniapp树形选择实现方法 使用uni-data-checkbox组件 uniapp内置的uni-data-checkbox组件支持树形结构选择,适用于多级分类场景。配置时需要将数据格式化为树形结构…

uniapp多环境配置

uniapp多环境配置

多环境配置的必要性 在UniApp开发中,多环境配置能有效区分开发、测试、生产等不同环境的API地址、密钥等参数,避免手动修改代码导致的错误。 创建环境配置文件 在项目根目录下创建env.js或co…

uniapp get

uniapp get

uniapp 获取数据的方法 在 uniapp 中获取数据可以通过多种方式实现,包括 API 请求、本地存储、页面传参等。以下是一些常见的方法: API 请求获取数据 使用 uni.request…

uniapp 搜索

uniapp 搜索

uniapp 搜索功能实现方法 全局搜索组件集成 在pages.json中配置全局搜索栏,适用于所有页面顶部显示搜索框。示例代码: "globalStyle": { "navigationBa…

uniapp图文

uniapp图文

图文混排实现方式 在uniapp中实现图文混排通常采用<rich-text>组件或自定义样式布局。<rich-text>支持解析HTML字符串,适合动态内容渲染。 <te…