【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,避免全局状态污染。
相关推荐
道长没有道观9 分钟前
ubuntu学习day2
服务器·学习·ubuntu
大阳光男孩13 分钟前
uniapp的通用页面及组件基本封装
前端·javascript·uni-app
庸子22 分钟前
Active Directory域服务管理与高级应用技术白皮书
运维·服务器·网络·windows·ad
开发者工具分享1 小时前
项目后期发现重大漏洞,如何紧急修复
网络·安全·web安全
搬码临时工1 小时前
路由器端口映射的意思、使用场景、及内网ip让公网访问常见问题和解决方法
运维·服务器·网络·物联网·tcp/ip·计算机网络·智能路由器
小徐Chao努力1 小时前
【计网】SSL/TLS核心原理
网络·网络协议·ssl
maomi_95263 小时前
数据库学习通期末复习二
服务器·数据库
liyongjun63164 小时前
CentOS 下 Zookeeper 常用命令与完整命令列表
linux·服务器·zookeeper·centos
facaixxx20245 小时前
什么是巨型帧Jumbo Frames?云服务器开启巨型帧有什么用?
运维·服务器
老李不敲代码6 小时前
榕壹云无人共享系统:基于SpringBoot+MySQL+UniApp的物联网共享解决方案
spring boot·物联网·mysql·微信小程序·uni-app·软件需求