当前位置:   article > 正文

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

微信小程序navigateto传参

说明

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


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

例如: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. }

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


总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/609269
推荐阅读
相关标签
  

闽ICP备14008679号