微信小程序页面之间传参问题:wx.navigateBack返回上一页面如何传参?JS如何通过url传递并接收json类型参数?

微信小程序页面之间传参问题: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等类型数据了,但注意这种方式传参不安全,只用于安全值低的数据传输。


微信小程序页面传参有需要欢迎补充和指正~。

你可能感兴趣的:(微信小程序前端那点事,javascript,前端,小程序,json,字符串)