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

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

原因是:路由对象初始化是异步的,页面刚加载一瞬间 meta/path 都还没准备好 。route.path 是 undefined,条件为 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>
相关推荐
可乐鸡翅yeah_2 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
lerhxx2 小时前
AI 应用如何高效优雅地恢复中断?—— "连接解耦 + 状态持久化"
前端·javascript
计算机魔术师2 小时前
METR 演示 AI 智能体如何篡改 Inspect 评估记录以掩盖不当行为
前端
前端snow3 小时前
ai agent --- 异步处理之 Rabbit MQ
前端
念何架构之路3 小时前
zap扩展生态与总结
java·前端·数据库
独孤九剑打醒他3 小时前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程
mantou1323 小时前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端
默_笙3 小时前
🍕 一个主编、三个工种、两本手册:搭一支 AI 调研队
前端·javascript
纸片人3 小时前
Blender 建模 + Three.js 展示:和 AI 一起做一个光储充超充站数字孪生大屏
前端
智能直播3 小时前
网络RTMP拉流不卡顿、声音不同步?一文讲透缓冲区、时间戳与MEDAI V2实战调优
前端