首頁  >  文章  >  web前端  >  vue中v-cloak在刷新與載入時閃爍如何處理

vue中v-cloak在刷新與載入時閃爍如何處理

php中世界最好的语言
php中世界最好的语言原創
2018-04-27 14:59:351854瀏覽

這次帶給大家vue中v-cloak在刷新與載入時閃爍如何處理,處理vue中v-cloak在刷新與載入時閃爍的注意事項有哪些,以下就是實戰案例,一起來看一下。

在使用vue綁定資料的時候,渲染頁面時會出現變數閃爍,例如

<p class="#app">
  <p>{{value.name}}</p>
</p>

在載入的時候會看到

{{value.name}}

在頁面出現,過了幾秒之後才會渲染數據,在vue中有個指令可以解決這個問題,v-cloak

那麼,v-cloak要放在什麼位置呢,是不是每個需要渲染資料的標籤都要加入這個指令,經過試驗發現,v-cloak並不需要加到每個標籤,只要在el掛載的標籤上新增就可以,

<p class="#app" v-cloak>
  <p>{{value.name}}</p>
</p>

而且,在css裡面要新增

[v-cloak] {
  display: none;
}

這樣就可以防止頁面閃爍了。

但是有的時候會不起作用,可能的原因有二:

1、v-cloak的display屬性被層級更高的給覆蓋掉了,所以要提高層級

[v-cloak] {
  display: none !important;
}

2、樣式放在了@import引入的css檔案中

v-cloak的這個樣式放在@import 引入的css檔案中不起作用,可以放在link引入的css檔案裡或內聯樣式中

補充:

下面看下Vue 中的v -cloak 解讀

v-cloak 的作用與用法

用法:

這個指令保持在元素上直到關聯實例結束編譯。和 CSS 規則如 [v-cloak] { display: none } 一起用時,這個指令可以隱藏未編譯的 Mustache 標籤直到實例準備完畢。官方API

<p id="app">
  {{msg}}
</p>

HTML 綁定Vue實例,在頁面載入時會閃爍

然後才會出現載入完成字樣,為了效果更明顯,我們可以延遲載入Vue 實例

setTimeout(() => {
  new Vue({
    el: '#app',
    data: {
      msg: 'hello'
    }
  })
},2000)

v-cloak 可以解決這個問題,在css 中加上

[v-cloak] {
 display: none;
}

在html 中的載入點加上v-cloak,就可以解決這一問題

<p id="app" v-cloak>
  {{msg}}
</p>

 Vue1.x 與Vue2 中v-cloak 的不同

Vue1 中,允許將Vue 實例掛載在body 上,而Vue2 是不允許的,想對整個頁面實例化,需要另外用一個p 來容納整個頁面內容,對其進行實例化

這樣在使用v-cloak 時,同樣需要用到這種方法

 為什麼我用的v-cloak 無效?

在實際專案中,我們常透過@import 來載入css 檔案

@import "style.css"
@import "index.css"

而@import 是在頁面DOM 完全載入後才會進行載入,如果我們將[ v-cloak] 寫在@import 載入的css 檔案中,就會導致頁面仍舊閃爍。

為了避免這種情況,我們可以將 [v-cloak] 寫在 link 引入的 css 中,或者寫一個內聯 css 樣式,這樣就得到了解決。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

JS裝飾函數使用詳解

#vue.js element-ui實作樹狀結構

以上是vue中v-cloak在刷新與載入時閃爍如何處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn