【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,避免全局状态污染。
相关推荐
AI浩21 小时前
【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
运维·服务器·前端
Guheyunyi1 天前
智慧消防管理系统如何重塑安全未来
大数据·运维·服务器·人工智能·安全
鲨莎分不晴1 天前
强化学习第五课 —— A2C & A3C:并行化是如何杀死经验回放
网络·算法·机器学习
一条可有可无的咸鱼1 天前
企业招聘信息,企业资讯进行公示
java·vue.js·spring boot·uni-app
Smartdaili China1 天前
掌握Java网页抓取:技术与示例完整指南
java·网络·学习·指南·网页·住宅ip·爬虫api
雾削木1 天前
k230 Pyhton三角形识别
运维·服务器·网络·stm32·智能路由器
郝学胜-神的一滴1 天前
Python数据模型:深入解析及其对Python生态的影响
开发语言·网络·python·程序人生·性能优化
北京聚信万通科技有限公司1 天前
传输协议:AS3
服务器·网络·安全·电子数据交换·as3
hgz07101 天前
Linux服务器环境部署与JMeter压测准备
linux·服务器·jmeter
爬山算法1 天前
Netty(12)Netty支持哪些协议和传输方式?
网络