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>
相关推荐
CappuccinoRose7 分钟前
拖拽交互体系
前端·javascript·css·html·交互·1024程序员节
开开心心就好9 分钟前
免安装PDF盖章工具,透明度和位置可调
运维·服务器·前端·javascript·pdf·ocr·1024程序员节
风骏时光牛马9 分钟前
AI服务线上推理异常故障
前端
king王一帅21 分钟前
做了三年 ProseMirror 后,我用四个月自研排版引擎实现 WPS / Google Docs 替代品,整套框架 MIT 开源
前端·vue.js·开源
এ慕ོ冬℘゜2 小时前
如何在 HTML 中嵌入音频和视频?
前端·html·音视频
变与不变80611 小时前
jQuery怎么使用
前端·javascript
神膘护体小月半11 小时前
flex 布局的 order 属性
前端·css
paopaokaka_luck11 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
仰望.11 小时前
vue 表格组件 vxe-table 树表格懒加载支持拖拽排序的详细用法
前端·javascript·vue.js·vxe-table
前端 贾公子11 小时前
vite-plugin-uni-manifest 升级指南
前端