微信小程序 - 页面跳转并传递参数(使用路由参数、使用全局变量、使用本地存储、使用路由参数结合本地存储)

一、使用路由参数

  1. PageA
js 复制代码
Page({
  jumpToPageB() {
    const data = {
      id: 10,
      name: "jack",
      content: "一些内容",
    };

    wx.navigateTo({
      url: `/pages/pageB/index?id=${data.id}&name=${data.name}&content=${encodeURIComponent(data.content)}`,
    });
  },
});
  1. PageB
js 复制代码
Page({
  onLoad(options) {
    console.log("接收到的参数:", options);

    console.log("id:", options.id);
    console.log("name:", options.name);
    console.log("content:", decodeURIComponent(options.content));
  },
});
  • 输出结果

    接收到的参数: {id: "10", name: "jack", content: "%E4%B8%80%E4%BA%9B%E5%86%85%E5%AE%B9"}
    id: 10
    name: jack
    content: 一些内容


二、使用全局变量

  • app.js
js 复制代码
App({
  globalData: {
    transferData: null,
  },
});
  1. pageA
js 复制代码
const app = getApp();

Page({
  jumpToPageB() {
    const data = {
      id: 10,
      name: "jack",
      content: "一些内容",
    };

    app.globalData.transferData = data;

    wx.navigateTo({
      url: `/pages/pageB/index`,
    });
  },
});
  1. PageB
js 复制代码
const app = getApp();

Page({
  onLoad() {
    console.log("接收到的参数:", app.globalData.transferData);
  },
});
  • 输出结果

    接收到的参数: {id: 10, name: "jack", content: "一些内容"}


三、使用本地存储

  1. pageA
js 复制代码
Page({
  jumpToPageB() {
    const complexData = {
      id: 123,
      content: "这是一个复杂对象",
      list: [1, 2, 3, 4, 5],
    };

    wx.setStorageSync("transferData", complexData);

    wx.navigateTo({
      url: `/pages/pageB/index`,
    });
  },
});
  1. PageB
js 复制代码
Page({
  onLoad() {
    console.log("接收到的参数:", wx.getStorageSync("transferData"));
  },
});
  • 输出结果

    接收到的参数: {id: 123, content: "这是一个复杂对象", list: Array(5)}


四、使用路由参数结合本地存储

  1. pageA
js 复制代码
Page({
  jumpToPageB() {
    const complexData = {
      id: 123,
      userInfo: {
        name: "李四",
        age: 30,
      },
      extraInfo: "额外信息",
    };

    // 生成唯一标识符
    const transferId = "transfer_" + Date.now();

    wx.setStorageSync(transferId, complexData);

    // 只传递标识符
    wx.navigateTo({
      url: `/pages/pageB/index?transferId=${transferId}`,
    });
  },
});
  1. pageB
js 复制代码
Page({
  onLoad(options) {
    const transferId = options.transferId;

    if (transferId) {
      // 通过标识符获取完整数据
      const data = wx.getStorageSync(transferId);
      console.log("获取的数据:", data);

      wx.removeStorageSync(transferId);
    }
  },
});
  • 输出结果

    获取的数据: {id: 123, userInfo: {...}, extraInfo: "额外信息"}

相关推荐
1024奇点8 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
Csvn8 小时前
WASM
前端
Warren2Lynch9 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
Knight_AL9 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
修己xj10 小时前
我用 AI 给自己写了一个 Markdown 编辑器,然后把它开源了
前端
FRing0310 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
幸运小猿10 小时前
模拟慢上传-处理超时重试image 丢失线上问题
前端·javascript·html
by2099910 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河11 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
IT召唤狮11 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php