a***@163.com
a***@163.com
  • 发布:2024-10-27 18:18
  • 更新:2024-10-28 10:08
  • 阅读:64

【小程序】请问是否有方法实现一个自定义的类似onShow、onLoad方法?

分类:HBuilderX

目前遇到比较棘手的问题,用户进入小程序,在App.vue中检查登录状态和发起登录。
但是在页面onLoad中调用的接口需要用户先登录,而页面和App的执行顺序是异步的,如果在页面中再次检查和发起登录再调用接口会造成性能和代码问题,我目前设想是否可以自定义一个像onLoad的函数比如叫afterLogin等等,或者uni是否有继承的方法(vue3+ts),在继承中实现也可以。
但目前没有找到合适的方法,请大神们指教!

2024-10-27 18:18 负责人:无 分享
已邀请:
zZZ1Ma

zZZ1Ma

提供一种思路,以下是伪代码:

// App  
const { promise, resolve, reject } = Promise.withResolvers()  
globalData.logInEnd = promise  
// 登录成功  
resolve({ errMsg: '登录成功' })  
// 登录失败  
reject ({ errMsg: '登录失败' })  

// Page  
onLoad(()=>{  
  getApp().globalData.logInEnd.then(()=> {  

  }).catch(()=>{  

  })  
})
  • a***@163.com (作者)

    我来试试 如果app和app内的登录成功先于页面执行 这种情况下 logInEnd是不是就失效了

    2024-10-28 12:03

  • zZZ1Ma

    回复 a***@163.com: 不会,logInEndPromise

    2024-10-29 09:33

  • zZZ1Ma

    回复 zZZ1Ma: Promise.withResolvers()可能需要polyfill

    2024-10-29 09:35

  • a***@163.com (作者)

    回复 zZZ1Ma: 想了下可能还是不行 比如A页面成功监听了 再到B页面 B页面其实就无法走logInEnd了吧

    2024-10-29 20:51

靐齉齾麤龖龗

靐齉齾麤龖龗 - 解决不了问题,那就解决提出问题的人

试试这个https://uniapp.dcloud.net.cn/api/interceptor.html 拦截一下页面跳转看看行不行

要回复问题请先登录注册