当前位置: 首页 > 知识库问答 >
问题:

javascript - 请问微信小程序 为什么二次刷新页面 会导致onload 的options 获取不到?

向子安
2023-05-06
onLoad: function onLoad(options) {
        let goods_id = options.goods_id
        let activity_id = options.activity_id
        this.setData({
            goods_id: goods_id,
            activity_id:activity_id
        });
    },
    onShow(){

      var that = this;
      // util.login().then(result => { 
      wx.getStorage({
        key: 'session_key',
        success: function success(res) {
          that.assist_bargain_goods_info_fn();
          that.assist_bargain_log_list_fn();
        }, fail: function fail() {
          _util2.default.login();
        }
      });
    },

_util2.default.login(); 这是一个判断有没有登录,没有登录就会请求登录接口的功能,这个登录接口,调用会刷新页面,但是再次触发会导致 onLoad 里的options为undefined 导致我这些goods_id 和 activity_id都出错 接口无法请求

但是我页面其实参数又都在,不知道怎么去做了 不知道我有没有说清楚

共有2个答案

端木承业
2023-05-06

有点像我早上碰到的情况,但是不知道是不是,试下从开发工具删除掉小程序项目,再打开

朱炳
2023-05-06

1.在 onLoad 函数中,把 goods_id 和 activity_id 保存到本地存储:

onLoad: function onLoad(options) {
    let goods_id = options.goods_id
    let activity_id = options.activity_id
    this.setData({
        goods_id: goods_id,
        activity_id:activity_id
    });
    
    wx.setStorage({
        key: 'goods_id',
        data: goods_id
    });
    wx.setStorage({
        key: 'activity_id',
        data: activity_id
    });
},

2.在 onShow 函数中,从本地存储中获取 goods_id 和 activity_id:

onShow() {
    var that = this;
    wx.getStorage({
        key: 'goods_id',
        success: function (res) {
            that.setData({ goods_id: res.data });
        }
    });
    wx.getStorage({
        key: 'activity_id',
        success: function (res) {
            that.setData({ activity_id: res.data });
        }
    });

    wx.getStorage({
        key: 'session_key',
        success: function success(res) {
            that.assist_bargain_goods_info_fn();
            that.assist_bargain_log_list_fn();
        },
        fail: function fail() {
            _util2.default.login();
        }
    });
}
 类似资料:
  • 我想 item.shop_price.split('.')[0] 直接把这个JS方法写在页面中, 如何去写呢?

  • 本文向大家介绍微信小程序下拉刷新界面的实现,包括了微信小程序下拉刷新界面的实现的使用技巧和注意事项,需要的朋友参考一下 微信小程序下拉刷新界面的实现 利用onPullDownRefresh函数设置下拉刷新功能 一、在app.json中,将window选项中的enablePullDownRefresh设为true       或者在要刷新的界面的XXX.json中设置enablePullDownRe

  • 我有个小程序页面,里面是正常的小程序页面内容,我想在这个页面的某个位置 局部嵌入一个webview 页面 请问可以做到吗?还是一定要一个只能是webview的跳转页面才可以? 我想局部嵌入webview 之后,在底部增加 拒绝和同意两个按钮

  • vue2开发 需求是没间隔多上时间请获取一次token、token是10分钟有效、我需要在7分钟的时候刷新一次token、然后我使用的是setInterval()方法 没7分钟请求一次, 但是出现的问题是、页面刷线以后setInterval()方法又重新执行了一次、导致没有正常刷新token 如何解决setInterval页面刷新以后不再重新执行 或者利用其他方法

  • 当我hithttp://localhost:4200或http://localhost:4200/forgotPasswordEmail本地环境时,它可以正常工作。 在我的正式生产环境中打开索引页面并单击链接转到另一个页面也可以。但是,当我刷新页面或直接转到

  • 问题内容: 在我的本地路由http:// localhost:9000 /#/ deviceDetail /中, 我有一个控制器来管理该视图。在进入该视图之前,我将一些变量设置为( 例如)。 一旦进入该视图,我就可以访问仪表盘属性,但是例如当我用键刷新页面时,该属性仪表盘就会丢失。 我试图将localSave变量保存,但是该方法遇到了循环引用问题。 有什么技巧可以解决吗? 问题答案: Angula