微信小程序实现页面强制刷新

参考链接

一、如何刷新当前页面
1. 直接调用this.onLoad()

使用这个方法的时候,在第一次进入页面时保存onLoad()的参数options为_options。然后当你处理完其它事务要想要刷新页面的时候就可以直接调用this.onLoad(this._options)

但是这个方法有一个缺点就是当你在onLoad() 函数里面有监听其它页面传过来的数据的时候,这个方法就不适用了。如下面这种情况

async onLoad(options) {
    console.log(options);
    const eventChannel = this.getOpenerEventChannel();
    //监听从商店页面传过来的商品数据
    eventChannel.on('shopPage', (data) => {
      const { commodity } = data;
      this.setData({
        commodity
      })
    })
    
  },
2. 创建一个特定的函数做数据更新

有时候只是某部分数据需要更新的时候,不需要调用onLoad() 函数,可以写一个特定的更新函数,这样就不会有直接调用onload的问题,还能提高速度。

二、如何返回上一个页面的时候刷新上一个页面的数据
1. 使用onShow() 函数

我们知道页面的生命周期中onShow()函数是每次页面显示都会调用的,当我们返回这个页面意味着页面从后台调到了前台,就会触发onShow()函数。所以只要将需要获取数据的方法放在onShow()函数里面就可以了

onShow() { //返回显示页面状态函数
	//错误处理
	this.onLoad()//再次加载,实现返回上一页页面刷新
	//正确方法
	this.fetchSomething() //只执行获取特定数据的方法,来进行局部刷新
	
}
2. 在当前页面获取上一个页面,然后调用上一个页面的更新函数

但是onShow() 函数每次页面显示的时候都会执行,如果我们只想特定的时候执行怎么办?下面的方法可以解决。

只要在本页面处理完数据后,获取上一个页面的对象,然后执行上一个页面的特定的数据更新函数就可以。

let pages = getCurrentPages()
let prePages = pages[pages.length - 2]  //获取上一个页面的对象
prePages.fetchSomething(); //调用上一个页面里的更新函数
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值