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

一、使用路由参数

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

相关推荐
swg3213214 分钟前
Redis实现主从选举
java·前端·redis
码云骑士5 分钟前
03-Python可变对象与不可变对象(下)-深浅拷贝的底层真相
开发语言·python
sycmancia7 分钟前
Qt——自定义模型类
开发语言·qt
英俊潇洒美少年8 分钟前
前端核心性能指标全解(CWV三大指标+辅助指标、检测方式、优化、面试背诵)
前端
alexander0688 分钟前
JavaScript 中,对象内部函数的几种等价写法,对象外部的 几种等价写法
javascript
云水一下9 分钟前
Vue.js从零到精通系列(八):项目实战——构建一个完整的电商后台管理系统
前端·javascript·vue.js
Csvn10 分钟前
Vue3 响应式陷阱:解构赋值后页面不动了?Proxy 的"隐形成员"在搞鬼
前端·vue.js
MATLAB代码顾问13 分钟前
Python数据分析项目实战:销售数据仪表盘
开发语言·python·数据分析
码云骑士14 分钟前
07-Python装饰器从入门到源码(下)-带参数装饰器与wraps
开发语言·python
LAM LAB16 分钟前
【Web】网页如何模拟移动端获取定位\定位模拟测试
开发语言·前端·javascript