👨🏻💻 热爱摄影的程序员
👨🏻🎨 喜欢编码的设计师
🧕🏻 擅长设计的剪辑师
🧑🏻🏫 一位高冷无情的全栈工程师
欢迎分享 / 收藏 / 赞 / 在看!
【问题】
使用 uni-app 开发的微信小程序中,如何在从 B 页面回来时,重新拉取数据?
【解决】
可以使用监听事件的方式解决返回页面重新获取数据的需求。
以登录状态失效后,跳转登录相关功能为例:
当点击 A 页面时发现登录状态失效,此时跳转到 B 页面去登录,登录成功后定义一个全局事件 loginSuccess,并返回上一页:
javascript
loginSuccess() {
this.$modal.hideLoading()
this.$modal.msgSuccess('登录成功')
setTimeout(() => {
uni.$emit('loginSuccess'); // 发送事件
this.$tab.navigateBack() // 返回上一页
}, 800)
}
在 A 页面中,onShow 钩子中监听登录成功事件,执行 reloadPageData 方法重新获取页面数据。
javascript
onShow() {
// 页面显示,监听登录成功事件
uni.$on('loginSuccess', this.reloadPageData);
}
需要注意的是,在页面卸载时,需要移除监听事件。
javascript
onUnload() {
// 页面卸载时,移除监听事件
uni.$off('loginSuccess', this.reloadPageData);
}
或者使用 uni.$once 方法,只监听一次事件。
javascript
onShow() {
// 页面显示,监听登录成功事件
uni.$once('loginSuccess', this.reloadPageData);
}