vue前端全局图标闪一下的问题

场景:在app.vue中,添加一个全局图标,有几个页面不展示,在进入不展示的页面刷新时,会闪一下图标,

原因是:路由对象初始化是异步的,页面刚加载一瞬间 meta/path 都还没准备好route.pathundefined,条件为 false,不渲染。

html 复制代码
<template>
  <RouterView /> 

  <div v-if="routerReady && !arr.includes(route.path)"  ref="elfRef" class="elfBox">
    <p class="iconBox" @click="changeIcon"><el-icon color="red" size="16"><Remove /></el-icon></p>
    <img src="@/assets/pcs/elf.gif" alt="">
  </div>

</template>

<script setup lang="ts">
import { ref, onMounted, reactive, } from 'vue'
import { useRouter, useRoute, RouterView } from 'vue-router'
const router = useRouter()
const route = useRoute()

const elfRef = ref(null)
const isFold = ref(false)

const routerReady = ref(false)
const arr = ['/login','/pcsksh']

// 解决页面刷新后,route.path为 undefined, 导致精灵闪一下
router.isReady().then(()=>{
  routerReady.value = true
})


const changeIcon = ()=>{
  isFold.value = !isFold.value
  if(isFold.value){
    elfRef.value.style.cssText = 'transform: translateX(60px) rotate(-90deg);'
  }else{
    elfRef.value.style.cssText = 'transform: translateX(0px) rotate(0deg);'
  }
}

</script>

<style scoped lang="scss">
.elfBox{
  position: fixed;
  bottom: 9%;
  right: 10px;
  transform: translateX(0px) rotate(0deg);
  transition: transform .3s ease;

  .iconBox{
    display: inline-block;
    position: absolute;
    right: 4%;
    top: 6%;
  }
}
</style>
相关推荐
ly76891 小时前
磁盘 I/O 延迟突增:用 iostat、blktrace 与火焰图定位到具体调用栈
java·linux·前端·数据库·iostat·磁盘 i/o·blktrace
IT_陈寒1 小时前
Redis并发写入踩坑记录:别让超时设置坑了你
前端·人工智能·后端
晨枫阳1 小时前
Client authentication(客户端授权)开关与OAuth2 PKCE的深刻理解
前端·安全
福兮说1 小时前
在浏览器里写一个“够用就好“的 Excel 公式求值器
前端·javascript·excel·编译原理
Bs_MoneyMagnet1 小时前
基于springboot+vue的图书馆预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·图书管理系统·计算机毕业设计
志尊宝1 小时前
Vue3 零基础每日笔记(027):组件上的 v-model——让自定义组件也能双向绑定
前端·javascript·vue.js·笔记·html5
萧行之3 小时前
可视化技术复盘:从图形语法看 D3、Vega-Lite、ECharts、Observable Plot
前端·学习·数据可视化
尾善爱看海11 小时前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
weixin_BYSJ198711 小时前
【计算机毕设】基于SpringBoot与Vue的文物保护档案管理系统08621
vue.js·spring boot·spring cloud·微服务·架构·django·课程设计