实现方式

在旧有项目中添加新的逻辑,保证最小改动,实现需求。

旧页面有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}`
          })
        }

      }
    })
  }
})
最后修改:2023 年 10 月 11 日
如果觉得我的文章对你有用,奖励一杯咖啡吧!