溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何解決Vue中 v-if 和v-else-if頁面加載出現(xiàn)閃現(xiàn)的問題

發(fā)布時間:2021-07-21 10:46:38 來源:億速云 閱讀:441 作者:小新 欄目:web開發(fā)

這篇文章主要介紹了如何解決Vue中 v-if 和v-else-if頁面加載出現(xiàn)閃現(xiàn)的問題,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

vue中v-if 和v-else-if在頁面加載的時候,不滿足條件的標(biāo)簽會加載然后再消失掉,如果要解決這個問題,案例如下:

vue html代碼塊:

<div id="divApp">  
<div v-if="type === 'A'" v-cloak>    
A  
</div>  
<div v-else-if="type === 'B'" v-cloak>    
B  
</div>  
<div v-else-if="type === 'C'" v-cloak>    
C  
</div>  
<div v-else v-cloak>    
Not A/B/C  
</div>
</div>

vue js代碼塊:

var divApp = new Vue({  
el: '#divApp',  
data: 
{    
isActive: true,    
hasError: false,   
type: 'A'  },  
// 在 `methods` 對象中定義方法  
methods: {  
}
}
)

css 代碼:

[v-cloak] 
{ 
display:none;
}

下面看下vue學(xué)習(xí)中v-if和v-show一起使用的問題

v-if和v-show一起使用

在開發(fā)項(xiàng)目過程中v-ifv-show一起使用時,接下面跟著的v-else會在頁面上面顯示兩次 。代碼如下:

<tbody class="sortable" id="sortTable">
   <tr v-show="items.length" v-for="(item,index) in items" :item="item">
       <td :id="item.objectId">{{index+1}}</td>
       <td>{{item.number}}</td>
   </tr>
   <tr v-else>
       <td colspan='2'>暫無數(shù)據(jù)</td>
   </tr>
</tbody>

原因其實(shí)很簡單,根據(jù)vue的文檔描述:

當(dāng)它們都處于同一節(jié)點(diǎn)時,v-for 的優(yōu)先級高于 v-if。這意味著,v-if 將分別在循環(huán)中的每次迭代上運(yùn)行。

 也就是v-if會判斷兩次。

當(dāng)然這樣用也有它的好處,當(dāng)你只想將某些項(xiàng)渲染為節(jié)點(diǎn)時,這會非常有用,如下:(以上只渲染 todos 中未完成的項(xiàng)。)

<li v-for="todo in todos" v-if="!todo.isComplete">
 {{ todo }}
</li>

如果你的意圖與此相反,是根據(jù)條件跳過執(zhí)行循環(huán),可以將 v-if 放置于包裹元素上

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何解決Vue中 v-if 和v-else-if頁面加載出現(xiàn)閃現(xiàn)的問題”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI