SilurianYang / uni-simple-router

A simple, lightweight 'uni-app' routing plugin
https://v2.hhyang.cn/v2/
MIT License
749 stars 164 forks source link

nvue页面跳nvueTab页面白屏 #373

Closed AK47-dadada closed 1 year ago

AK47-dadada commented 2 years ago

问题描述 做了一个登陆跳转的功能,跳转到首页之后页面直接白屏

复现步骤

  1. 启动
  2. 当页面没登陆时,使用官方的案例,让页面跳转到login页面,待登陆接口返回成功之后自动跳转到index页面
  3. 发现跳转到index页面后,整个页面处于白屏状态,但是onready方法可以弹出信息。。。

login

onSubmit() {
      if (!this.isAgree) {
        uni.$u.toast('您还未同意用户协议, 请同意后再登录')
        return
      }
      this.$refs.form
        .validate()
        .then(res => {
          this.loginLoading = true
          this.$store.dispatch('user/login', this.form).then(res => {
            console.log('登陆成功!')
            uni.switchTab({
              url: '/pages/index/index',
              fail(err) {
                console.log(err)
              },
              success(v) {
                console.log('success', v)
              }
            })
          }).catch((error) => {
            console.log(error)
            uni.$u.toast('服务器繁忙~')
          }).finally(() => {
            this.loginLoading = false
          })
        })
        .catch(error => {
          console.log(error)
        })
    },

permission.js

import { router } from '@/router'
import store from '@/store'
import { loginWhiteList, authWhiteList } from '@/router/white-list'

// 全局路由前置守卫
router.beforeEach((to, from, next) => {
  const { path } = to
  // 检测是否在登录白名单
  if (loginWhiteList.includes(path)) {
    next()
  } else {
    // 检测是否包含token
    const token = store.getters.token
    console.log(token)
    if (!token) {
      // 跳转到登录界面
      next({
        path: '/pages/user/login',
        replace: true
      })
    } else {
      console.log('需要登录')
      // 如果已登录,则检测是否已实名
      // 暂时禁用路由功能
      if (!authWhiteList.includes(path)) {
        // 白名单直接跳转
        console.log('authWhiteList', path)
        next()
      } else {
        // 不是白名单, 则验证是否已白名单
        const isAuth = store.getters.isAuth
        // 拦截2: 未实名
        if (!isAuth) {
          // 跳转到未实名界面
          console.log('需要认证')
          next({
            path: '/pages/user/auth/no-auth',
            replace: true
          })
        } else {
          console.log('可以跳转')
          next()
        }
      }
    }
  }
})

预期结果 跳转到index页面后正常展示

实际结果 首页白屏

系统信息:

补充信息 暂无,希望作者大佬帮忙分析

AK47-dadada commented 2 years ago

image 模拟登录的地方

SilurianYang commented 2 years ago

pages.json 中的启动项是那个路径? 看起来一切正常,如果方便可以提交一个demo

AK47-dadada commented 2 years ago

pages.json 中的启动项是那个路径? 看起来一切正常,如果方便可以提交一个demo

"pages": [ // #ifdef APP-PLUS { "path": "pages/index/entrance" }, // #endif ]

demo怎么发你 大佬 发你邮箱?我想直接把项目发给你...

SilurianYang commented 2 years ago

如果方便 你可以直接上传到该Issue上,不方便的话 你可以发送到我的邮箱 hhyang.yq.cn@gmail.com

AK47-dadada commented 2 years ago

如果方便 你可以直接上传到该Issue上,不方便的话 你可以发送到我的邮箱 hhyang.yq.cn@gmail.com

好的大佬,我发你邮箱,附上issues id

AK47-dadada commented 2 years ago

image @SilurianYang

AK47-dadada commented 2 years ago

@SilurianYang 大佬 我发你qq叭

SilurianYang commented 2 years ago

1606726660@qq.com

SilurianYang commented 2 years ago

初步判断是BUG、因为NVUE作为tab页时渲染容器和挂载是不一样的,头疼!!!

AK47-dadada commented 2 years ago

@SilurianYang 大佬辛苦拉

luck-hao commented 2 years ago

大佬,请问这个问题解决了嘛,我也碰到同样的问题

SilurianYang commented 2 years ago

该版本修复 v2.0.8-beta.4

Yangjunhao1221 commented 1 year ago

没有修复啊,首页为nvue时tabbar跳转就有问题了

Yangjunhao1221 commented 1 year ago

@SilurianYang 大佬这是为什么啊