欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue渲染時(shí)閃爍{{}}的問(wèn)題及解決方法

 更新時(shí)間:2018年03月28日 10:14:40   作者:zhalcie2011  
v-if和v-show可能是日常開(kāi)發(fā)中最常用的兩個(gè)指令,雖然看上去兩者功能是類似的,但是兩者還是存在很大區(qū)別的。接下來(lái)通過(guò)本文給大家分享vue渲染時(shí)閃爍{{}}的問(wèn)題及解決方法,感興趣的朋友一起看看吧

v-if和v-show可能是日常開(kāi)發(fā)中最常用的兩個(gè)指令,雖然看上去兩者功能是類似的,但是兩者還是存在很大區(qū)別的。

 v-if與v-show區(qū)別:

在切換 v-if 塊時(shí),Vue.js 有一個(gè)局部編譯/卸載過(guò)程,因?yàn)?v-if 之中的模板也可能包括數(shù)據(jù)綁定或子組件。v-if 是真實(shí)的條件渲染,因?yàn)樗鼤?huì)確保條件塊在切換當(dāng)中合適地銷毀與重建條件塊內(nèi)的事件監(jiān)聽(tīng)器和子組件。

v-if 也是惰性的:如果在初始渲染時(shí)條件為假,則什么也不做——在條件第一次變?yōu)檎鏁r(shí)才開(kāi)始局部編譯(編譯會(huì)被緩存起來(lái))。

相比之下,v-show 簡(jiǎn)單得多——元素始終被編譯并保留,只是簡(jiǎn)單地基于 CSS 切換。

簡(jiǎn)單來(lái)說(shuō)二者最大的區(qū)別是v-if只會(huì)在滿足條件時(shí)才會(huì)編譯,而v-show不管是否滿足條件始終會(huì)編譯,v-show的顯示與隱藏只是簡(jiǎn)單的切換CSS的display屬性。

 適用場(chǎng)景:

明白了二者的本質(zhì)區(qū)別后什么時(shí)候適合用v-if什么時(shí)候用v-show也變得簡(jiǎn)單了。

一般來(lái)說(shuō),v-if 有更高的切換消耗而 v-show 有更高的初始渲染消耗。因此,如果需要頻繁切換 v-show 較好,如果在運(yùn)行時(shí)條件不大可能改變 v-if 較好。

比如說(shuō)現(xiàn)在很多頁(yè)面在不同端表現(xiàn)是不同的,最常見(jiàn)的是很多的APP頁(yè)面在微信端打開(kāi)時(shí)頁(yè)面上會(huì)顯示下載的提示,而在APP內(nèi)部則不會(huì),像這樣的情況每個(gè)端的狀態(tài)在加載時(shí)就是確定的不會(huì)變的就適合用v-if,這樣在APP內(nèi)打開(kāi)時(shí)顯示下載的部分直接就不會(huì)編譯。

而像頁(yè)面上元素根據(jù)不同條件顯示/隱藏這樣的地方用v-show是最合適的了,因?yàn)橄襁@種基本上兩個(gè)狀態(tài)要頻繁切換,如上面所說(shuō),v-show的切換消耗是小于v-if的。

 多條件

很多時(shí)候代碼中需要多條件判斷,但是vue中只有v-if和v-else,沒(méi)有v-elseif這樣的指令。雖然沒(méi)有類似的指令,但依舊還是有幾種方法可以解決這個(gè)問(wèn)題。

 方法一:template

<div v-if="xxx"></div>
<template v-else>
<div v-if="yyy"></div>
<div v-else></div>
</template>

 方法二:partical

元素是已注冊(cè)的 partial 的插槽,partial 在插入時(shí)被 Vue 編譯。 元素本身會(huì)被替換。 元素需要指定 name 特性。

這貨讓人想起javaScript原生的fragement元素,但卻不是一個(gè)東西。partial有靜態(tài)和動(dòng)態(tài)之分,而要解決上面的問(wèn)題就要用到動(dòng)態(tài)partial。

示例:

// 注冊(cè) partial
Vue.partial('my-partial', '<p>This is a partial! {{msg}}</p>')
<!-- 靜態(tài) partial -->
<partial name="my-partial"></partial>
<!-- 動(dòng)態(tài) partial -->
<!-- 渲染 partial,id === vm.partialId -->
<partial v-bind:name="partialId"></partial>

要解決多個(gè)條件的問(wèn)題,我們就可以為每種情況預(yù)先注冊(cè)好各自的partial,然后將partial的name屬性綁定到判斷條件,這樣就能實(shí)現(xiàn)多個(gè)條件判斷。

 其他:

1.v-if指令可以應(yīng)用于template包裝元素上,而v-show不支持templete

2.將v-show應(yīng)用在組件上時(shí),因?yàn)橹噶畹膬?yōu)先級(jí) v-else 會(huì)出現(xiàn)問(wèn)題,解決辦法就是用另一個(gè) v-show 替換 v-else

官方給出的示例如下:

// 錯(cuò)誤
<custom-component v-show="condition"></custom-component>
<p v-else>這可能也是一個(gè)組件</p>
// 正確做法
<custom-component v-show="condition"></custom-component>
<p v-show="!condition">這可能也是一個(gè)組件</p>

Vue頁(yè)面加載時(shí)v-show設(shè)置的隱藏元素出現(xiàn)導(dǎo)致頁(yè)面閃爍問(wèn)題

在寫(xiě)APP社區(qū)頁(yè)面的時(shí)候在一些地方用了v-show,在刷新頁(yè)面的時(shí)候就發(fā)現(xiàn)即便在邏輯判斷為false某些元素不該顯示時(shí)也會(huì)露個(gè)臉,一閃而過(guò),元素快小還好,如果是特別大的地方就看起來(lái)就很不爽,于是就上網(wǎng)搜了下看有沒(méi)有解決方法,結(jié)果還真有。

 方法一: v-cloak

官方的解釋就一句話:這個(gè)指令保持在元素上直到關(guān)聯(lián)實(shí)例結(jié)束編譯。

 光看這句話一頭霧水,后面緊接著說(shuō)了用法:

和 CSS 規(guī)則如 [v-cloak] { display: none } 一起用時(shí),這個(gè)指令可以隱藏未編譯的 Mustache 標(biāo)簽直到實(shí)例準(zhǔn)備完畢。

也就是說(shuō)v-cloak指令可以像CSS選擇器一樣綁定一套CSS樣式然后這套CSS會(huì)一直生效到實(shí)例編譯結(jié)束。

 示例代碼:

// <div> 不會(huì)顯示,直到編譯結(jié)束。
[v-cloak] {
display: none;
}
<div v-cloak>
{{ message }}
</div> 

 方法二: v-text

vue中我們會(huì)將數(shù)據(jù)包在兩個(gè)大括號(hào)中,然后放到HTML里,但是在vue內(nèi)部,所有的雙括號(hào)會(huì)被編譯成textNode的一個(gè)v-text指令。

 而使用v-text的好處就是永遠(yuǎn)更好的性能,更重要的是可以避免FOUC (Flash of Uncompiled Content) ,也就是上面與遇到的問(wèn)題。

示例代碼:

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

總結(jié)

以上所述是小編給大家介紹的vue渲染時(shí)閃爍{{}}的問(wèn)題及解決方法 ,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用vue3重構(gòu)拼圖游戲的實(shí)現(xiàn)示例

    使用vue3重構(gòu)拼圖游戲的實(shí)現(xiàn)示例

    這篇文章主要介紹了使用vue3重構(gòu)拼圖游戲的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • element表格數(shù)據(jù)部分模糊的實(shí)現(xiàn)代碼

    element表格數(shù)據(jù)部分模糊的實(shí)現(xiàn)代碼

    這篇文章給大家介紹了element表格數(shù)據(jù)模糊的實(shí)現(xiàn)代碼,文中有詳細(xì)的效果展示和實(shí)現(xiàn)代碼供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-01-01
  • Vue支持搜索與篩選的用戶列表實(shí)現(xiàn)流程介紹

    Vue支持搜索與篩選的用戶列表實(shí)現(xiàn)流程介紹

    這篇文章主要介紹了Vue支持搜索與篩選的用戶列表實(shí)現(xiàn)流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • vue獲取參數(shù)的幾種方式總結(jié)

    vue獲取參數(shù)的幾種方式總結(jié)

    這篇文章主要介紹了vue獲取參數(shù)的幾種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 一文搞懂vue編譯器(DSL)原理

    一文搞懂vue編譯器(DSL)原理

    本文主要介紹了一文搞懂vue編譯器(DSL)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 10分鐘帶你上手Vue3中新增的API

    10分鐘帶你上手Vue3中新增的API

    這篇文章主要介紹了10分鐘教你快速上手Vue3中新增的API,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 解決node-sass安裝報(bào)錯(cuò)無(wú)python等情況

    解決node-sass安裝報(bào)錯(cuò)無(wú)python等情況

    在國(guó)內(nèi)安裝node-sass常因無(wú)法穩(wěn)定連接GitHub而失敗,解決方法包括手動(dòng)下載對(duì)應(yīng)的binding.node文件并放入緩存目錄,操作步驟詳細(xì),適合非Python用戶,無(wú)需額外環(huán)境配置
    2024-10-10
  • Vue 路由切換時(shí)頁(yè)面內(nèi)容沒(méi)有重新加載的解決方法

    Vue 路由切換時(shí)頁(yè)面內(nèi)容沒(méi)有重新加載的解決方法

    今天小編就為大家分享一篇Vue 路由切換時(shí)頁(yè)面內(nèi)容沒(méi)有重新加載的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue.js中過(guò)濾器的使用教程

    vue.js中過(guò)濾器的使用教程

    過(guò)濾器是一個(gè)通過(guò)輸入數(shù)據(jù),能夠及時(shí)對(duì)數(shù)據(jù)進(jìn)行處理并返回一個(gè)數(shù)據(jù)結(jié)果的簡(jiǎn)單函數(shù)。下面這篇文章主要給大家介紹了關(guān)于vue.js中過(guò)濾器使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)看看詳細(xì)的介紹。
    2017-06-06
  • Vue3在router中使用pinia報(bào)錯(cuò)的簡(jiǎn)單解決辦法

    Vue3在router中使用pinia報(bào)錯(cuò)的簡(jiǎn)單解決辦法

    這篇文章主要給大家介紹了關(guān)于Vue3在router中使用pinia報(bào)錯(cuò)的簡(jiǎn)單解決辦法,什么是pinia,可以理解為狀態(tài)管理工具,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08

最新評(píng)論