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

一、使用路由参数

  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: "额外信息"}

相关推荐
24级计算机应用技术3班闫卓20 小时前
Bash Shell 基础操作全面指南
开发语言·bash
雨岚霏20 小时前
Bash语言的数据库编程
开发语言·后端·golang
weixin_lynhgworld20 小时前
淘宝扭蛋机小程序:开启线上娱乐与购物的全新融合时代
小程序·娱乐
被AI抢饭碗的人20 小时前
linux:线程池
linux·开发语言
lsx20240620 小时前
Kotlin 继承
开发语言
虫小宝20 小时前
返利软件架构设计:多平台适配的抽象工厂模式实践
java·开发语言·抽象工厂模式
karshey20 小时前
【IOS webview】h5页面播放视频时,IOS系统显示设置的icon
前端·ios
树欲静而风不止慢一点吧20 小时前
小米手环9应用/游戏开发快速入门
前端·javascript·小程序
写代码的【黑咖啡】20 小时前
深入理解 Python 中的函数
开发语言·python