【uni-app】页面跳转传参

一、EventChannel 的核心作用

  1. 替代全局事件总线
    相比传统的 uni.$emituni.$on,EventChannel 无需手动移除监听(如 uni.$off),避免内存泄漏风险。
  2. 解决 URL 传参限制
    当需要传递大量数据时,URL 拼接参数可能超出长度限制,而 EventChannel 可通过事件通道直接传输复杂对象。
  3. 精准的页面间通信
    仅在跳转的源页面和目标页面之间建立通道,避免全局事件的污染。

二、核心方法与使用步骤

1. 发送方页面(发起跳转的页面)

通过 navigateTo 的 success 回调的 eventChannel 发送数据:

javascript 复制代码
  uni.navigateTo({
    url: '/pages/jobseeker/applications',
    // 传递userId作为参数
    success: (res) => {
      res.eventChannel.emit('userId', userInfo.value.id);
    }
  });
2. 接收方页面(被打开的页面)

通过 getOpenerEventChannel() 获取通道实例,监听事件并返回数据:

javascript 复制代码
onLoad(() => {
  const pages = getCurrentPages();
  const currentPage = pages[pages.length - 1];
  const eventChannel = currentPage.getOpenerEventChannel();
  eventChannel.on('userId', (params) => {
    userId.value = params;
    // 其他代码...
  });
});

三、适用场景

  1. 数据回填
    例如从地址选择页返回选中地址到下单页。
  2. 跨页面实时交互
    如页面 A 跳转到页面 B 后,B 需要动态向 A 发送进度更新。
  3. 替代全局状态管理
    简单场景下可替代 Vuex,避免全局状态污染。
相关推荐
pp-周子晗(努力赶上课程进度版)5 分钟前
【计算机网络-数据链路层】以太网、MAC地址、MTU与ARP协议
服务器·网络·计算机网络
asdfg125896312 分钟前
在linux系统中,没有网络如何生成流量以使得wireshark能捕获到流量
linux·网络·wireshark
ᥬ 小月亮16 分钟前
Uniapp编写微信小程序,使用canvas进行绘图
微信小程序·uni-app·c#
IP管家26 分钟前
多级路由器如何避免IP冲突
网络·网络协议·tcp/ip·游戏·智能路由器·ip
开利网络40 分钟前
开放的力量:新零售生态的共赢密码
大数据·运维·服务器·信息可视化·重构
向明天乄44 分钟前
uni-app,小程序自定义导航栏实现与最佳实践
小程序·uni-app
Python私教1 小时前
Python函数:从基础到进阶的完整指南
java·服务器·python
大神的风范2 小时前
从0开始学linux韦东山教程第一三章问题小结(1)
linux·服务器
wgc2k2 小时前
Java游戏服务器开发流水账(3)游戏数据的缓存简介
服务器·游戏
久绊A2 小时前
双ISP(双互联网服务提供商)
网络