问题
uniapp中,我们的页面是在pages.json里面配置的,第一个页面是我们的启动页,
假设我们第一个启动页设置成登录页,那我们每次是不是每次检测token,都会监测登录页,然后才会跳转至想要的页面
假设我们第一个启动页设置成首页,那我们同样的监测token,也会每次都会经过一下首页,就会存在闪烁一下的问题
解决
我们肯定的想法就是在onLauch生命周期中进行判断是否有存储的token,然后再进行判断,同样的是闪烁问题
使用plus.navigator.closeSplashscreen()
首先manifest.json app-plus 默认这两值是true 设置改为false 需要时在关闭
对于manifest.json源码配置
"app-plus" : {
"splashscreen" : {
"alwaysShowBeforeRender" : false,
"waiting" : true,
"autoclose" : false,
"delay" : 0
}
}
在onLaunch生命周期中进行判断
onLaunch: function () {
//应用初始化完成触发(只触发一次)
const token = uni.getStorageSync('token');//获取token
if (token) {
//存在则关闭启动页进入首页
plus.navigator.closeSplashscreen();
} else {
//不存在则跳转至登录页
uni.reLaunch({
url: "/pages/login/index",
success: () => {
plus.navigator.closeSplashscreen();
}
})
}
},
我们在pages.json中把首页设置为第一页
"pages": [
/*首页设置为第一页*/
{
"path":"pages/1-home/index",
"style": {
"navigationBarTitleText": "首页",
"navigationStyle":"custom"
}
},
{
"path": "pages/login/index",
"style": {
"navigationBarTitleText": "登录",
"navigationStyle":"custom"
}
}
],
亲测可行