微信小程序页面之间传参问题:wx.navigateBack返回上一页面如何传参?JS如何通过url传递并接收json类型参数?
前言
一、返回前一页面并传参
二、URL传参
1. url传递json类型数据
2. 获取数据
前言
页面之间传参安全性不强,但有时对于无需加密的数据这种传输方式难以避免。首先对于具有前后关系的页面,如何在后一个页面交互属性改变之后返回的上一级页面也跟着改变?其次,在需要跳转页面的场景中,如果需要传的参数是一个json类型,该如何传参和接收参数呢?
一、返回前一页面并传参
在小程序中所有页面的路由全部由框架进行管理,框架以栈的形式维护了当前的所有页面,就是我们所说的页面栈。如果直接采用路由切换的方式,页面栈中会存在旧的页面,当用户点击返回,仍然是旧的数据,并且用户体验很差。
可以通过getCurrentPages()函数获取页面栈的实例,该函数返回值以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。直接调用上一个页面对象的setData()方法,把数据存到上一个页面中去。
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
// 调用上一个页面对象的setData()方法,把数据存到上一个页面中去
prevPage.setData({
data:data
});
// 返回上一个页面
wx.navigateBack({
delta: -1
});
这样的话在用户与后一个页面交互之后,再返回前一个页面,展示的是更新之后的值。
二、URL传参
1. url传递json类型数据
先将json对象转换为字符串再进行编码。
var url = encodeURIComponent(JSON.stringify(data))
2. 获取数据
新页面先将url解码之后,再转换为json等格式
onLoad: function (options) {
let data = JSON.parse(decodeURIComponent(options.data))
}
这样就可以在页面之间传递json、object等类型数据了,但注意这种方式传参不安全,只用于安全值低的数据传输。
微信小程序页面传参有需要欢迎补充和指正~。
344




被折叠的 条评论
为什么被折叠?



