小程序navigateback传值_微信小程序页面之间传参问题: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&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序页面跳转传递的几种方法如下: 1. 使用wx.navigateTo和wx.navigateBack函数的url参数传递 在源页面使用wx.navigateTo函数跳转到目标页面时,可以在url参数中携带需要传递。例如: ``` wx.navigateTo({ url: '/pages/target/target?id=123&name=test' }) ``` 在目标页面的onLoad函数中可以获取这些: ``` onLoad: function(options) { console.log(options.id) // 输出123 console.log(options.name) // 输出test } ``` 如果要在目标页面中修改这些返回到源页面,则可以使用wx.navigateBack函数的delta参数wx.getCurrentPages函数获取源页面实例对象,然后调用实例对象的setData方法更新源页面数据。例如: 在目标页面中修改返回: ``` wx.navigateBack({ delta: 1, success: function(res) { let pages = getCurrentPages() let prevPage = pages[pages.length - 2] prevPage.setData({ id: 456, name: 'update' }) } }) ``` 2. 使用全局变量传递 在app.js中定义一个全局变量,在需要传递页面中修改该变量的,并在需要获取该页面中使用getApp函数获取app实例对象来获取该变量的。例如: 在app.js中定义全局变量: ``` App({ globalData: { id: '', name: '' } }) ``` 在需要传递页面中修改该变量的: ``` let app = getApp() app.globalData.id = 123 app.globalData.name = 'test' ``` 在需要获取该页面中获取该变量的: ``` let app = getApp() console.log(app.globalData.id) // 输出123 console.log(app.globalData.name) // 输出test ``` 3. 使用本地存储传递 在源页面中使用wx.setStorageSync函数将需要传递存储到本地存储中,在目标页面中使用wx.getStorageSync函数获取该,并在需要修改该返回到源页面时使用wx.setStorageSync函数更新该。例如: 在源页面中存储需要传递: ``` wx.setStorageSync('id', 123) wx.setStorageSync('name', 'test') ``` 在目标页面中获取该: ``` let id = wx.getStorageSync('id') let name = wx.getStorageSync('name') console.log(id) // 输出123 console.log(name) // 输出test ``` 在目标页面中修改该返回: ``` wx.navigateBack({ delta: 1, success: function(res) { wx.setStorageSync('id', 456) wx.setStorageSync('name', 'update') } }) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值