• 微信小程序页面传递参数方法


    说明

            页面跳转方法有很多中,但经常会通过一个页面传递参数给另一个页面,非常的常见。但数据量大的时候,通常用字符串传递,但会显得过于臃肿,下面介绍页面传递参数的各种方式。


    一、页面跳转链接携带参数

    例如:A跳转到B页面携带参数

    特点:只能传递单个页面,数据量少

    1. A页面:
    2. wx.navigateTo({
    3. url: '/pages/login/login?id=XXX'
    4. });
    5. B页面接收数据
    6. onLoad(options) {
    7. if (options.id) {
    8. console.log(options.id)//接收到参数
    9. }
    10. }

    当然,如果过多的参数时候,将会显示url: '/pages/login/login?id=XXX&id2=XXX&id3=XXX...'就会显得很臃肿,不易于维护和修改数据。

    二、使用对象进行传递

    将过多的数据进行对象化,然后再转成字符类型进行传递,传递之后再换成json格式

    特点:只能传递单个页面,数据量可大

    1. A页面:
    2. handletap: function() {
    3. var data = JSON.stringify(obj);
    4. wx.navigataTo({
    5. url: ‘url?data=’ + data
    6. })
    7. }
    8. B页面:
    9. onload: function(option) {
    10. var data = JSON.parse(option.data)//传递参数
    11. }
     
    

     三、监听acceptDataFromOpenerPage事件

    监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据

    特点:只能传递单个页面,数据量可大

    1. A页面:
    2. handletap: function() {
    3. wx.navigateTo({
    4. url: '/pages/set_up/set_up',
    5. success: function(res) {
    6. // 通过eventChannel向被打开页面传送数据
    7. res.eventChannel.emit('adviser_list', adviser_list)
    8. }
    9. })
    10. }
    11. B页面:
    12. onload: function(option) {
    13. const eventChannel = this.getOpenerEventChannel()
    14. // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
    15. eventChannel.on('adviser_list', function (data) {
    16. console.log(adviser_list)//传递参数
    17. });
    18. }

     

    四、通过公共js来缓存传递方法

    在app.js文件里面,声明一个对象,然后将需要的数值存储进该方法里面,在需要的页面进行调用即可

    特点:可以跨页面、多页面使用、关闭小程序自动清空

    1. app.js{
    2. globalData: {
    3. adviser_list:"";//数据
    4. }
    5. }
    6. A页面:
    7. const App = getApp();
    8. handletap: function() {
    9. App.globalData.adviser_list="小明";//重点
    10. wx.navigateTo({
    11. url: '/pages/set_up/set_up',
    12. })
    13. }
    14. B页面:
    15. onload: function(option) {
    16. let adviser_lis = App.globalData.adviser_lis//传递的参数
    17. }

    五、通过缓存来进行数据传递

    通过上一个页面缓存到内存里面,然后在需要的页面进行数据获取,可以跨多页面使用,数据永久有效,但是会增加多余缓存,需要清理,传递少的数据,建议使用前面方法

    特点:可以跨页面、多页面使用、增加缓存,关闭小程序不会清空,永久使用

    1. A页面:
    2. handletap: function() {
    3. let adviser_list={
    4. name:1,
    5. age:100
    6. }
    7. wx.setStorageSync('adviser_list',userInfo);//重点
    8. wx.navigateTo({
    9. url: '/pages/set_up/set_up',
    10. })
    11. }
    12. B页面:
    13. onload: function(option) {
    14. let adviser_list= wx.getStorageSync('adviser_list')||'';//获得参数,可以在想要的方法里面获取,不一定需要在onload方法里面。
    15. }

    还有组件传递参数,以及数据监听传递参数等,将不作过多的介绍,感兴趣的小伙伴可以在文章中寻找查看。


    总结

    文档主要介绍了页面传递参数的方法,少量的参数单页面使用可以采用方法一、大量的单页面使用可以采用方法二或三,多页面暂时缓存数据可以使用方法四,大量的数据多页面永久使用可以采用方法五。

  • 相关阅读:
    SV--虚方法
    40道JAVA经典算法面试题(答案)
    Python中的模块
    java学习part03基本类型
    202212 青少年等级考试机器人实操真题三级
    JS数据类型的判断方式
    loadrunner lr解决参数化一次取多条记录【一对多问题】
    2022/7/27 算力-价格明细
    springboot项目运行访问网页提示404
    Oracle Form Bulider 打开后提示 FRM-18018:Failed to load the following objects
  • 原文地址:https://blog.csdn.net/weixin_43452154/article/details/134455437