问题
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');//获取tokenif (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"}}],
亲测可行