微信小程序 - 页面返回并传递数据(使用事件通道、操作页面栈)

一、使用事件通道

1、基本介绍
  1. 在 PageA 中,调用 wx.navigateTo 跳转时,在 events 中定义一个事件监听器,用于接收 PageB 返回的数据

  2. 在 PageB 中,先通过 getOpenerEventChannel 方法获取事件通道,在返回前触发事件并发送数据

2、演示
  1. PageA
html 复制代码
<Button bindtap="jumpToPageB">跳转到 pageB</Button>
js 复制代码
Page({
  jumpToPageB() {
    wx.navigateTo({
      url: "/pages/pageB/index",
      events: {
        getResult(data) {
          console.log("pageB 传递回来的数据:", data);
        },
      },
    });
  },
});
  1. PageB
html 复制代码
<Button bindtap="backToPageA">返回到 pageA</Button>
js 复制代码
Page({
  backToPageA() {
    const eventChannel = this.getOpenerEventChannel();
    eventChannel.emit("getResult", {
      id: 123,
      userInfo: {
        name: "李四",
        age: 30,
      },
    });

    wx.navigateBack();
  },
});

二、操作页面栈

1、基本介绍
  • 通过调用 getCurrentPages 方法获取页面栈实例,直接修改上一个页面的数据
2、演示
  1. PageA
html 复制代码
<Button bindtap="jumpToPageB">跳转到 pageB</Button>
<button bindtap="checkResult">检查返回数据</button>
js 复制代码
Page({
  data: {
    result: null,
  },
  jumpToPageB() {
    wx.navigateTo({
      url: "/pages/pageB/index",
    });
  },
  checkResult() {
    console.log("返回数据:", this.data.result);
  },
});
  1. PageB
html 复制代码
<Button bindtap="backToPageA">返回到 pageA</Button>
js 复制代码
Page({
  backToPageA() {
    const pages = getCurrentPages();
    const prevPage = pages[pages.length - 2];
    if (prevPage) {
      prevPage.setData({
        result: "some content",
      });
    }

    wx.navigateBack();
  },
});
相关推荐
To_OC1 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
Scott9999HH1 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
不好听6131 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus1 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
码智社2 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海2 小时前
python 列表、元组、集合和字典
开发语言·python
前端小李子2 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech2 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn3 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
萧瑟余晖3 小时前
JDK 26 新特性详解
java·开发语言