一、如何刷新当前页面
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(); //调用上一个页面里的更新函数