cli创建项目,pc端微信小程序 无法使用uni.$emits uni-app

cli创建项目,pc端微信小程序 无法使用uni.$emits uni-app

示例代码:

uni.navigateTo({ url: ‘/pages_amex/pages/result/index’, success: (res) => { // uni.$emit(‘doneAmexSearch’, { amexForm, resp }) 此处在pc端小程序 没有作用 res.eventChannel.emit(‘doneAmexSearch’, { amexForm, resp }) }, })


## 操作步骤:
在多个pc端均出现问题

## 预期结果:
应正确通过事件监听 传递参数

## 实际结果:
没有成功监听到事件 传递参数

## bug描述:
- 使用uni.$emit 在android iOS ipad 上表现均无问题,但是pc端小程序 这个方法没有用 且控制台无报错  

表格

项目
产品分类 uniapp/小程序/微信
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 Windows 11 家庭中文版 24H2
第三方开发者工具版本号 1.06.2412031
基础库版本号 3.3.5
项目创建方式 CLI
CLI版本号 3.0.0-4040520250104002

更多关于cli创建项目,pc端微信小程序 无法使用uni.$emits uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

请提供简单的复现工程。如果你相同的代码在安卓、ios 上正常,在 pc 小程序上不正常,去微信社区反馈。

更多关于cli创建项目,pc端微信小程序 无法使用uni.$emits uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html


问题分析:在PC端微信小程序中uni.$emit失效,但使用eventChannel可以正常工作。

原因:

  1. PC端微信小程序环境与移动端存在差异,部分API实现不完全一致
  2. uni.$emit依赖的全局事件机制在PC端可能未被完整支持
  3. eventChannel作为页面间通信的标准方式,在各端兼容性更好

解决方案:

  1. 推荐使用eventChannel替代uni.$emit进行跨页面通信
  2. 发送方使用eventChannel.emit():
uni.navigateTo({
  url: '/pages_amex/pages/result/index',
  success: (res) => {
    res.eventChannel.emit('doneAmexSearch', { amexForm, resp })
  }
})
  1. 接收方在onLoad中监听:
onLoad(options) {
  const eventChannel = this.getOpenerEventChannel()
  eventChannel.on('doneAmexSearch', (data) => {
    console.log('收到数据:', data)
  })
}
回到顶部