当前位置: 首页 > news >正文

微信小程序(路由传参)

微信小程序的路由系统和其他Web应用类似,主要通过页面路径和URL参数进行页面导航和数据传递。下面详细介绍微信小程序路由的基本使用方法和相关技巧。

1. 基本页面导航

1.1 配置页面路径

在微信小程序的 app.json 文件中,需要配置小程序的页面路径。这里定义了小程序中包含的所有页面路径。

{"pages": ["pages/index/index","pages/detail/detail"]
}
1.2 使用导航 API 跳转页面

微信小程序提供了多种导航 API,可以在页面之间进行跳转。

wx.navigateTo保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回到原页面
wx.redirectTo关闭当前页面,跳转到应用内的某个页面
wx.switchTab跳转到指定的 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.reLaunch关闭所有页面,打开到应用内的某个页面

 

 

例子:使用 wx.navigateTo 跳转页面
 
wx.navigateTo({url: '/pages/detail/detail?id=123&name=John'
});

2. URL 参数传递

2.1 传递参数

在跳转页面时,可以在 URL 中附加参数,例如上面的例子中,我们在 URL 中附加了 idname 参数。

2.2 获取参数

在目标页面的 onLoad 方法中,可以通过 options 参数获取传递过来的参数:

 
Page({onLoad: function (options) {console.log(options.id);   // 输出 123console.log(options.name); // 输出 John}
});

3. 动态构建 URL 参数

有时需要传递动态生成的参数,可以通过字符串拼接或模板字符串来实现:

const id = 123;
const name = 'John';
wx.navigateTo({url: `/pages/detail/detail?id=${id}&name=${name}`
});

4. 复杂数据传递

如果需要传递复杂的数据(例如对象或数组),可以将数据转换为 JSON 字符串传递,并在目标页面进行解析。

4.1 传递 JSON 字符串
const data = {id: 123,name: 'John',items: [1, 2, 3]
};
wx.navigateTo({url: `/pages/detail/detail?data=${encodeURIComponent(JSON.stringify(data))}`
});

4.2 解析 JSON 字符串

在目标页面中,通过 decodeURIComponentJSON.parse 解析数据:

 
Page({onLoad: function (options) {const data = JSON.parse(decodeURIComponent(options.data));console.log(data.id);   // 输出 123console.log(data.name); // 输出 Johnconsole.log(data.items);// 输出 [1, 2, 3]}
});

5. 使用全局数据或本地存储

当传递的数据过大或复杂时,URL 参数可能不是最佳选择。可以使用全局数据或本地存储。

5.1 使用全局数据

app.js 中定义全局数据:

App({globalData: {userInfo: null}
});

在页面中设置和获取全局数据:

// 设置全局数据
const app = getApp();
app.globalData.userInfo = {id: 123,name: 'John'
};// 获取全局数据
Page({onLoad: function () {const app = getApp();const userInfo = app.globalData.userInfo;console.log(userInfo.id);   // 输出 123console.log(userInfo.name); // 输出 John}
});

5.2 使用本地存储

通过 wx.setStorageSync wx.getStorageSync 来存储和获取数据:

// 设置本地存储
wx.setStorageSync('userInfo', {id: 123,name: 'John'
});// 获取本地存储
Page({onLoad: function () {const userInfo = wx.getStorageSync('userInfo');console.log(userInfo.id);   // 输出 123console.log(userInfo.name); // 输出 John}
});

http://www.lryc.cn/news/357842.html

相关文章:

  • 电脑显示不出网络
  • random模块一
  • Spring OAuth2:开发者的安全盾牌!(下)
  • kotlin基础之协程
  • 法那科机器人M-900iA维修主要思路
  • 01_Spring Ioc(详解) + 思维导图
  • Python开发Android手机APP
  • Spring Cache自定义缓存key和过期时间
  • 条件竞争漏洞
  • 磁带存储:“不老的传说”依然在继续
  • CentOS8环境下FTP服务器安装与配置
  • C# 元组 Tuple
  • 100个投资者99个选择使用这款EA,WeTrade发现1个事实
  • 爬虫面试手册
  • k8s cephfs(动态pvc)
  • dubbo复习:(9)配置中心的大坑,并不能像spring cloud那样直接从配置中心读取自定义的配置
  • 建设现代智能工业-智能化、数字化、自动化节能减排
  • 据报导,SK海力士的HBM团队源自三星,暗示三星不幸失去HBM优势
  • Verilog HDL基础知识(一)
  • Django之文件上传(一)
  • 光纤现网与接入网概念对应
  • 通过扩展指令增强基于覆盖引导的模糊测试
  • 第一节:Redis的数据类型和基本操作
  • 组件的传参等
  • 构建php环境、安装、依赖、nginx配置、ab压力测试命令、添加php-fpm为系统服务
  • 服装服饰商城小程序的作用是什么
  • HNU-计算机体系结构-实验2-Tomasulo算法
  • 深入分析 Android Activity (一)
  • Python 调整PDF文件的页面大小
  • 支付功能、支付平台、支持渠道如何测试?