千家信息网

微信小程序页面返回传值的解决方案是什么

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍"微信小程序页面返回传值的解决方案是什么",在日常操作中,相信很多人在微信小程序页面返回传值的解决方案是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
千家信息网最后更新 2025年11月09日微信小程序页面返回传值的解决方案是什么

这篇文章主要介绍"微信小程序页面返回传值的解决方案是什么",在日常操作中,相信很多人在微信小程序页面返回传值的解决方案是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"微信小程序页面返回传值的解决方案是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

使用场景

小程序从A页面跳转到B页面,在B页面选择一个值后返回到A页面,在A页面使用在B页面选中的值。例如:在购买订单页面跳转到地址列表,选择完地址以后回退到订单页面,订单页面的配送地址需要同步更新。

解决方案

常见的比容要容易解决的方案是使用小程序的全局存储globalData、本地缓存storage、获取小程序的页面栈,调用上一个Page的setData方法、以及利用wx.navigateTo的events属性监听被打开页面发送到当前页面的数据。下面给大家简单对比下四种方法的优缺点:

1、使用globalData实现

//page Aconst app = getApp() //获取App.js实例onShow() {//生命周期函数--监听页面显示  if (app.globalData.backData) {    this.setData({ //将B页面更新完的值渲染到页面上      backData: app.globalData.backData    },()=>{       delete app.globalData.backData //删除数据 避免onShow重复渲染    })  }}//page Bconst app = getApp() //获取App.js实例changeBackData(){   app.globalData.backData = "我被修改了"   wx.navigateBack()}

2、使用本地缓存Storage实现

//page A  onShow: function () {    let backData = wx.getStorageSync("backData")    if(backData){       this.setData({                backData            },()=>{                wx.removeStorageSync("backData")            })    }  }, //page B changeBackData(){    wx.setStorageSync("backData", "我被修改了")    wx.navigateBack() },

3、使用小程序的Page页面栈实现

使小程序的页面栈,比其他两种方式会更方便一点而且渲染的会更快一些,不需要等回退到A页面上再把数据渲染出来,在B页面上的直接就会更新A页面上的值,回退到A页面的时候,值已经被更新了。globalData和Storage实现的原理都是在B页面上修改完值以后,回退到A页面,触发onShow生命周期函数,来更新页面渲染。

//page BchangeBackData(){    const pages = getCurrentPages();    const beforePage = pages[pages.length - 2]    beforePage.setData({  //会直接更新A页面的数据,A页面不需要其他操作      backData: "我被修改了"    })}

4、使用wx.navigateTo API的events实现

wx.navigateTo的events的实现原理是利用设计模式的发布订阅模式实现的,有兴趣的同学可以自己动手实现一个简单的,也可以实现相同的效果。

//page A goPageB() {    wx.navigateTo({      url: "B",      events: {        getBackData: res => { //在events里面添加监听事件          this.setData({            backData: res.backData          })        },      },    })  },//page B   changeBackData(){    const eventChannel = this.getOpenerEventChannel()       eventChannel.emit("getBackData", {          backData: "我被修改了"    });     wx.navigateBack() }

到此,关于"微信小程序页面返回传值的解决方案是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

页面 程序 方案 更新 解决方案 数据 学习 地址 方法 订单 监听 函数 原理 周期 周期函数 实例 更多 模式 生命 缓存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 赛克数据库管理系统 火星大数据库的中奖号码信息 广安网络技术哪家强 软件开发项目管理好吗 服务器配置与管理实训报告 电子化采购软件开发商 国家网络安全战略的五个目标是 学生网络安全意识有哪些 服务器日志文件维护 软件开发工程师学习那有 软件开发内部运营管理 只有ldf数据库 web服务器资源管理器 全国网络安全法律法规考试试题 南山区正规网络技术服务费 四川工控软件开发价位 猎人919人软件开发 台湾免备案服务器 微软非关系型数据库 宜兴测试软件开发价格咨询 电脑基础不好学软件开发 江苏网络时钟同步服务器配置 无法连接数据库怎么改密码 毅友汽修软件数据库 成都千猫互联网科技有限公司 常州优派生物科技互联网有限公司 杭州网络安全研究所都进不了 易语言写服务器 首都网络安全日是几号 网吧cpu取决于服务器吗
0