解決vue渲染時閃爍{{}}的問題


原文轉自: 點我

Vue頁面加載時v-show設置的隱藏元素出現導致頁面閃爍問題
在寫APP社區頁面的時候在一些地方用了v-show,在刷新頁面的時候就發現即便在邏輯判斷為false某些元素不該顯示時也會露個臉,一閃而過,元素快小還好,如果是特別大的地方就看起來就很不爽,於是就上網搜了下看有沒有解決方法,結果還真有。

方法一: v-cloak
官方的解釋就一句話:這個指令保持在元素上直到關聯實例結束編譯。
光看這句話一頭霧水,后面緊接着說了用法:

和 CSS 規則如 [v-cloak] { display: none } 一起用時,這個指令可以隱藏未編譯的 Mustache 標簽直到實例准備完畢。

也就是說v-cloak指令可以像CSS選擇器一樣綁定一套CSS樣式然后這套CSS會一直生效到實例編譯結束。
示例代碼:(親測可用

<template>
  <keep-alive include="index">
    <router-view v-cloak></router-view>
  </keep-alive>
</template>

<style>
  /* 隱藏Vue代碼,所有的組件設置成隱藏 */
  [v-cloak]:not(body) {
    display: none;
  }
</style>

  

方法二: v-text
vue中我們會將數據包在兩個大括號中,然后放到HTML里,但是在vue內部,所有的雙括號會被編譯成textNode的一個v-text指令。
而使用v-text的好處就是永遠更好的性能,更重要的是可以避免FOUC (Flash of Uncompiled Content) ,也就是上面與遇到的問題。

示例代碼:

<span v-text="msg"></span>
<!-- same as -->
<span>{{msg}}</span>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM