在安卓 app 首次打开时,进入登录页面,登录成功后进入tabbar首页 。第二次打开时,进入登录页会判断是否登录过,登录过,直接进入首页,但这样有一个问题,就是在登录页一闪而过,这样感觉很 low
因在 官方文档上没有找到好方法,自己的解决方式:先写一个空白页面,在空白页面判断是否登录面,如果没登录,进登录页面(这个正常),不正常的是: 当退出 app 后,下次再打开 app , 因为是登录过了,所以在启动页面转了10圈才进入到tarbar首页, 奇怪的是每次都是转10圈才进入首页,这肯定排除网络问题了,不知道这个是 bug , 还是需要在哪优化?
期待您的回复,感谢。
6 个回复
uni插件牛爱花
很简单
i***@qq.com (作者) - it developer
补充 : 在没有登录的时候,进入登录页面,一般转不到2圈就进入到页面了。
uni插件牛爱花
入口文件一个判断
i***@qq.com (作者)
你好,我就是在入口页面(就是自己建了一个空白页面)判断的,为了方便理解,我贴一下代码:
<template>
<view>
</view>
</template>
<script>
export default {
onReady(){
// 启动后判断用户是否已登录,如果登录了,则跳到主页,如果没登录,则跳到登录页
var loginStaff = getApp().globalData.getLoginStaff() ;
if(loginStaff){
uni.switchTab({
url:"/pages/index/index"
})
}else{
uni.reLaunch({
url:"/pages/login/login"
})
}
},
</script>
<style>
</style>
不知道和您说的入口文件是否是一个意思?
此前,我试着在App.vuew 文件中的onLaunch () 判断登录,但还是会到登录页面一闪而过。所以这种方式好像不可取。
2020-11-05 09:50
uni插件牛爱花
回复 i***@qq.com: 为什么要建一个 空白页面? 用登录 返回的类似token 值去判断他不香嘛? 有 值就直接跳首页 没有就跳登录 多舒服
2020-11-05 09:55
i***@qq.com (作者)
回复 uni插件牛爱花: 感觉您好像误解我的意思了,我的主要问题不是怎么判断登录,而是在哪判断登录,因为在登录页面判断,会有一闪而过的问题,但在 App.vue 页面的onLaunch 判断又没起作用,所以就自己写了个空白页面判断。
2020-11-05 09:59
uni插件牛爱花
回复 i***@qq.com: 你是不是 用户登录过了就直接进入首页 而没登录进入 登录 是不是
2020-11-05 10:05
i***@qq.com (作者)
回复 uni插件牛爱花: 是的,因为加了一个空白页面,所以没有一闪而过的问题了。然后又回到了我发这个贴的问题了,在 app 打开的加载界面(不是我的空白页面),就是下面那个图,每次都是转10圈,才进入页面,为什么每次都是10圈,这个我是不理解的。
2020-11-05 10:14
i***@qq.com (作者)
回复 uni插件牛爱花: 已解决,感谢您的回复,让我在遇到问题时不孤单,解决方式可参考文档:https://ask.dcloud.net.cn/article/35565
2020-11-05 14:25
喜欢技术的前端 - QQ---445849201
你的方法挺好,但是还可以优化,在app.vue中的onLaunch生命周期中判断,如果登录跳转首页,因为APP加载需要时间,等首页的tabbar数据加载好,也刚好跳转过来,如果没有登录就跳转登录页面喽
i***@qq.com (作者)
此前,我试着在App.vuew 文件中的onLaunch () 判断登录状态,但还是会到登录页面一闪而过。所以这种方式好像不可取。您之前试过是可以的吗? 如果可以,我就再尝试一下。
2020-11-05 09:53
喜欢技术的前端
回复 i***@qq.com: 你的首页是登录页面吧?将首页调整为tabbar的首页
2020-11-05 10:01
i***@qq.com (作者)
回复 喜欢技术的前端: 不能调整成首页,首页的前提是用户必须登录了,我现在主要的疑问是为什么在加载界面,每次都是转10圈才进入我的页面(这个页面是个 tarbar 页面)。
2020-11-05 10:19
i***@qq.com (作者)
回复 喜欢技术的前端: 已解决,感谢您的回复,让我在遇到问题时不孤单,解决方式可参考文档:https://ask.dcloud.net.cn/article/35565
2020-11-05 14:25
i***@qq.com (作者) - it developer
代码重贴一下:
``javascript
<template>
<view>
</view>
</template>
<script>
export default {
onReady(){
// 启动后判断用户是否已登录,如果登录了,则跳到主页,如果没登录,则跳到登录页
var loginStaff = getApp().globalData.getLoginStaff() ;
if(loginStaff){
uni.switchTab({
url:"/pages/index/index"
})
}else{
uni.reLaunch({
url:"/pages/login/login"
})
}
},
</script>
<style>
</style>
i***@qq.com (作者) - it developer
问题已解决,算是自己看文档,没有看仔细吧,但这文档确实不明显也不好找。在此以做记录,有入坑转10圈的朋友可以借此解决问题。
解决方法见文档:
https://ask.dcloud.net.cn/article/35565