判断当前页面是重新打开,还是从其他页面返回
有时候在其它页面进行操作(包含对数据的增删改查等)后,回到主页,由于数据改变,可能需要进行数据的重新请求,以确保数据的准确性和实时性。
这时候就需要了解一下微信小程序的页面的生命周期的相关知识,知道基本的页面显示的基本过程。
页面在初次加载的时候,微信客户端就会给Page实例派发onLoad事件,Page构造器参数所定义的onLoad方法会被调用,onLoad在页面没被销毁之前只会触发1次。
页面显示之后,Page构造器参数所定义的onShow方法会被调用,一般从别的页面返回到当前页面时,当前页的onShow方法都会被调用。
在页面初次渲染完成时,Page构造器参数所定义的onReady方法会被调用,onReady在页面没被销毁前只会触发1次,onReady触发时,表示页面已经准备妥当,在逻辑层就可以和视图层进行交互了。
以上三个事件触发的时机是onLoad早于 onShow,onShow早于onReady。
页面不可见时,Page构造器参数所定义的onHide方法会被调用,这种情况会在使用wx.navigateTo切换到其他页面、底部tab切换时触发。
当前页面使用wx.redirectTo或wx.navigateBack返回到其他页时,当前页面会被微信客户端销毁回收,此时Page构造器参数所定义的onUnload方法会被调用。
可以通过设置一个数据标识(pageFresh,初始值为false)的操作,用户通过主页点击进入其他页面,(wx.navigateTo跳转),则主页隐藏(onHide事件被调用,pageFresh赋值为true),当用户回退到主页时,调用onShow,判断pageFresh的值,再决定是否刷新请求。
链接: 微信小程序官方文档–页面的相关知识.
Page({
/**
* 页面的初始数据
*/
data: {
// 回退刷新的标识
pageFresh: false
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
// 判断是否是回退到首页,是回退的话,再重新请求接口,更新数据
let _ = this
if (_.data.pageFresh) {
//所需刷新数据的请求
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
let _ = this
_.data.pageFresh = true
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
})