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

一、使用事件通道

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();
  },
});
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄3 天前
JavaScript 隐式全局变量解析
javascript