微信小程序实现页面强制刷新
星花月 时间:2022-08-01
一、如何刷新当前页面
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 }) }) },123456789101112
2. 创建一个特定的函数做数据更新
有时候只是某部分数据需要更新的时候,不需要调用onLoad() 函数,可以写一个特定的更新函数,这样就不会有直接调用onload的问题,还能提高速度。
二、如何返回上一个页面的时候刷新上一个页面的数据
1. 使用onShow() 函数
我们知道页面的生命周期中onShow()函数是每次页面显示都会调用的,当我们返回这个页面意味着页面从后台调到了前台,就会触发onShow()函数。所以只要将需要获取数据的方法放在onShow()函数里面就可以了
onShow() { //返回显示页面状态函数 //错误处理 this.onLoad()//再次加载,实现返回上一页页面刷新 //正确方法 this.fetchSomething() //只执行获取特定数据的方法,来进行局部刷新 }1234567
2. 在当前页面获取上一个页面,然后调用上一个页面的更新函数
但是onShow() 函数每次页面显示的时候都会执行,如果我们只想特定的时候执行怎么办?下面的方法可以解决。
只要在本页面处理完数据后,获取上一个页面的对象,然后执行上一个页面的特定的数据更新函数就可以。
let pages = getCurrentPages()let prePages = pages[pages.length - 2] //获取上一个页面的对象prePages.fetchSomething(); //调用上一个页面里的更新函数123
特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。