如何處理?Vue3?中隱藏元素刷新閃爍問題
一、問題說明
頁(yè)面刷新,原本隱藏的元素會(huì)一閃而過。
效果展示:

頁(yè)面的導(dǎo)航欄通過路由跳轉(zhuǎn)中攜帶的 meta 參數(shù)控制導(dǎo)航欄的 顯示/隱藏,但在實(shí)踐過程中發(fā)現(xiàn),雖然元素隱藏了,但是刷新頁(yè)面會(huì)出現(xiàn)閃爍的問題。
項(xiàng)目源碼:
在路由跳轉(zhuǎn)中為 meta 添加參數(shù),用于控制導(dǎo)航欄的 顯示/隱藏:
// src/router/index.ts
const routes: Array<RouteRecordRaw> = [
...
{
path: '/home',
component: () => import('@/views/home/Home.vue'),
},
{
path: '/login',
component: () => import('@/views/login/Login.vue'),
meta: { hideNav: true }
},
{
path: '/register',
component: () => import('@/views/login/Register.vue'),
meta: { hideNav: true }
},
...
]<!-- Main.vue -->
<template>
<div id="main">
<nav id="navigation" v-if="!$route.meta.hideNav">
<Aside></Aside>
</nav>
<div id="content">
<router-view></router-view>
</div>
</div>
</template>
<script setup lang="ts">
import Aside from "../aside/Aside.vue";
</script>二、嘗試解決
起初查看網(wǎng)友分享的資料,嘗試為導(dǎo)航欄添加 v-cloak 并設(shè)置樣式:
<template>
<div id="main">
<nav id="navigation" v-cloak v-if="!$route.meta.hideNav">
<Aside></Aside>
</nav>
...
</div>
</template>
<style lang="less" scoped>
[v-cloak] {
display: none;
}
</style>在實(shí)踐過程中發(fā)現(xiàn),并無(wú)效果。
三、最終解決方案
解決思路:先隱藏導(dǎo)航欄,通過監(jiān)聽路由跳轉(zhuǎn)的目的地來判斷是否顯示導(dǎo)航欄。該解決方案略顯粗糙,粗糙的地方在于,需要手動(dòng)排除部分頁(yè)面,例如登錄、注冊(cè)頁(yè),根據(jù)自身項(xiàng)目,可能還需要手動(dòng)排除其他頁(yè)面(暫時(shí)沒想到更好的解決方案≡(▔﹏▔)≡)。
<template>
<div id="main">
<nav id="navigation" ref="navRef">
<Aside></Aside>
</nav>
<div id="content">
<router-view></router-view>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, watch } from "vue";
import Aside from "../aside/Aside.vue";
import { useRoute } from 'vue-router';
const route = useRoute();
// 當(dāng)用戶跳轉(zhuǎn)至登錄頁(yè)面時(shí),F(xiàn)5刷新頁(yè)面時(shí),導(dǎo)航欄會(huì)出現(xiàn)閃爍,因此通過判斷路由跳轉(zhuǎn)的目的地來控制導(dǎo)航欄的 顯示/隱藏
const navRef = ref();
watch(() => route.path,() => {
if(route.path == '/login' || route.path == '/register') {
navRef.value.style.display = "none";
}else {
navRef.value.style.display = "block";
}
})
</script>
<style lang="less" scoped>
#navigation {
display: none;
}
</style>四、最終效果演示

到此這篇關(guān)于處理 Vue3 中隱藏元素刷新閃爍問題的文章就介紹到這了,更多相關(guān)vue刷新閃爍內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Vue 瀏覽器后退無(wú)法觸發(fā)beforeRouteLeave的問題
這篇文章主要介紹了解決Vue 瀏覽器后退無(wú)法觸發(fā)beforeRouteLeave的問題,需要的朋友可以參考下2017-12-12
vue mint-ui學(xué)習(xí)筆記之picker的使用
本篇文章主要介紹了vue mint-ui學(xué)習(xí)筆記之picker的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10

