uni-app 一键登录 调用uni.closeAuthView iOS端不会触发页面onshow
uni-app 一键登录 调用uni.closeAuthView iOS端不会触发页面onshow
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 64 | HBuilderX |
操作步骤:
- uni.closeAuthView iOS端不触发页面onshow
- Android 会触发页面onshow
预期结果:
- iOS端可以像Android一样 uni.closeAuthView() 完之后触发页面onShow
实际结果:
- uni.closeAuthView iOS端不触发页面onshow
- Android 会触发页面onshow
bug描述:
- uni.closeAuthView iOS端不触发页面onshow
- Android 会触发页面onshow
更多关于uni-app 一键登录 调用uni.closeAuthView iOS端不会触发页面onshow的实战教程也可以访问 https://www.itying.com/category-93-b0.html
@DCloud_Android_DQQ 复现问题了吗?试了几台iphone, 都有这个问题
更多关于uni-app 一键登录 调用uni.closeAuthView iOS端不会触发页面onshow的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个属于平台差异。 android 平台目前调用一键登录,确实会触发onshow. 暂时无法抹平此差异。
那能主动调用下onshow吗 调用方式是什么呢 currentPage.$vm.onShow() 不行
小程序的话 可以调用页面onshow ,APP上如果想刷新页面的话 ,有什么api吗
回复 叫啥好呢: 你是想ios 主动调用一下? 你在close的时候 主动调用 this.onShow() 不行吗
回复 DCloud_Android_DQQ: currentPage.onShow() 不行 currentPage.$vm.onShow() 也不行
通过let pages = getCurrentPages(); pages[pages.length - 1].onShow()
回复 DCloud_Android_DQQ: TypeError: _this8.onShow is not a function. (In ‘_this8.onShow()’, ‘_this8.onShow’ is undefined)
回复 叫啥好呢: 你可以把onShow中要进行的操作写到一个method中,然后onShow里面调用,然后这个方法也可以随便调
回复 DCloud_UNI_LXH: 后续会考虑和Android一样吗
这是一个已知的uni-app平台差异问题。uni.closeAuthView()在iOS端确实不会自动触发页面的onShow生命周期,而Android端可以正常触发。
解决方案:
-
手动触发onShow逻辑 在调用
uni.closeAuthView()后,显式执行原本在onShow中的代码:uni.closeAuthView() // 手动执行onShow中的业务逻辑 this.loadData() this.updateUserInfo() -
使用回调函数 如果业务逻辑依赖登录完成后的状态,可在closeAuthView后添加回调:
uni.closeAuthView() setTimeout(() => { // 延迟执行确保视图完全关闭 this.$refs.page.handleAuthClose() }, 100) -
统一生命周期管理 将页面显示相关的逻辑提取到独立方法中,在onShow和登录关闭后都调用:
onShow() { this.pageShowHandler() }, methods: { closeAuth() { uni.closeAuthView() this.pageShowHandler() }, pageShowHandler() { // 统一的页面显示逻辑 } }


