实现方式
在旧有项目中添加新的逻辑,保证最小改动,实现需求。
旧页面有login登录页面,其中有一个watch监听,监听了pinia中的isLogin字段
Taro.navigateBack有一个回调方法,success,参考网上其他方案,是在回调用再次调用了小程序的生命周期方法。
如onReady,onLoad等
参考代码
let pages = Taro.getCurrentPages(); // 获取页面栈
let prevPage = pages[pages.length - 2]; // 上一个页面
prevPage.$component.setState({
data: data
}, () => {
Taro.navigateBack()
})
因为本人项目中不确定,调用onReady方法能百分百刷新数据,所以想到使用页面跳转的方式刷新页面。
参考代码
watch(() => userStore.isLogin, (n) => {
if (n) {
Taro.navigateBack({
success: (res) => {
// 登录完成刷新页面的逻辑
const pageArray = Taro.getCurrentPages()
// 获取上一个页面的path
const path = pageArray[pageArray.length - 1].$taroPath
console.log(pageArray[pageArray.length - 1].$taroPath)
if (path) {
// 在调用返回之后,页面已经在上一个页面中,此时使用关闭此页面跳转,实现刷新页面
Taro.redirectTo({
url: `/${path}`
})
}
}
})
}
})