微信小程序刷新webview页面问题

一、背景

      我这边小程序的首页使用的是web-view组件。相当于直接引入了url,访问写好的h5页面即可。比着原生的小程序页面来说,方便了不少,但是刷新是个问题。这里记录一下刷新的方法。

二、微信小程序的生命周期函数

生命周期函数

onLoad: 页面加载
一个页面只会调用一次。
接收页面参数可以获取wx.navigateTo和wx.redirectTo及<navigator/>中的 query。

onShow: 页面显示
每次打开页面都会调用一次。

onReady: 页面初次渲染完成
一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
对界面的设置如wx.setNavigationBarTitle请在onReady之后设置。

onHide: 页面隐藏
当navigateTo或底部tab切换时调用。

onUnload: 页面卸载
当redirectTo或navigateBack的时候调用。

三、常用的刷新

1、如果是用原生的小程序页面

如果是用原生写的,那么刷新就很简单了,
请参考微信官方文档
我这边是相当于在对应的page页面,比如是index页面的.json文件中,直接写上个:

 "enablePullDownRefresh": true

这样就能实现index页面的下拉刷新了

2、onShow方法刷新页面

根据我们对于生命周期函数的理解,我们可以在页面上使用onShow()方法,达到每次跳转到该页面的时候,都加载一下页面。

类似于:

onShow : function(){
    console.log('onShow start');
    var that = this;
    if (app.globalData.token && app.globalData.token != '') {
      console.log('my token is:');
      console.log(app.globalData.token);
      that.setData({
        url: 'https://xxxxxx?token=' + app.globalData.token
      })
      console.log(1);
    } else {
        app.tokenCallback = token => {
          console.log('tokenCallBack');
          if (token != '') {

            that.setData({
              url: 'https://xxxxxx?token=' + token
            })
          } else {
            console.log('token still null')
          }
        }
      }
  }

这部分函数的意思就是每次加载页面,都重新给url赋值。

四、我碰到的问题

1、由于博主用的是web-view加载页面。直接在onLoad()里面给url赋值的。所以每次点击到首页,并不能实现刷新页面的效果。这就很绝望了。

2、onShow()方法是没毛病的,每次都能顺利执行。但是由于小程序自己的缓存机制问题。就算已经重新给url赋值还是没用。

3、最终解决方案:在onShow()方法里面调用onLoad()方法。

没错,就是这么简单粗暴,你不是不能自己刷新吗,那我就让你重新加载一次页面,。

 onShow : function(){
    console.log('onShow start');
    this.onLoad();
    }

      我觉得自己这个解决方案应该是有问题的。但是更好的方案一时也想不到。如果大家有更好的解决办法,请私信我。谢谢。

end

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值