您好,登錄后才能下訂單哦!
小編給大家分享一下vuejs中v-if和v-show的區(qū)別有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1.官網(wǎng)概念描述
v-if 是'真正的'條件渲染,因?yàn)樗鼤?huì)確保在切換過程中條件塊內(nèi)的事件監(jiān)聽器和子組件適當(dāng)?shù)乇讳N毀和重建.
v-if 也是惰性的,如果在初始渲染時(shí)條件為假,那么什么都不做- - 直到條件第一次為真的時(shí)候才會(huì)開始渲染條件塊,相比之下,v-show就簡(jiǎn)單得多- - 不管初始條件是什么,元素總會(huì)被渲染,并且只是簡(jiǎn)單的基于css進(jìn)行切換.
一般來說,v-if 有更高的切換開銷,而 v-show 有更高的出事渲染開銷.因此,如果需要非常頻繁的切換,那么使用v-show好一點(diǎn);如果在運(yùn)行時(shí)條件不太可能改變,則使用v-if 好點(diǎn).
2.實(shí)踐結(jié)果
摘錄: 如果用v-if的話,整個(gè)dom結(jié)構(gòu)壓根就不會(huì)出現(xiàn)在頁面上,如果是用v-show的話,要視后面的條件來定,如果是true,則顯示,如果為false,則加上style=”display:none
”. 所以呢,如果是組件之類的大塊頭,個(gè)人覺得用v-if更好一些,如果是一些暫時(shí)性隱藏,一會(huì)要顯示的,還是v-show更方便。對(duì)于v-style和v-show來比較,v-show相當(dāng)于是v-style=”display:none”
和v-style=”display:block
”的快捷方式。
1. v-show不起作用問題
最近在用vue_element-ui
開發(fā)多頁面應(yīng)用,其中遇到v-show
不起作用問題.
a.問題描述,如下圖(預(yù)想達(dá)到的效果),其中表格數(shù)據(jù)是動(dòng)態(tài)變化的,包括標(biāo)題也會(huì)根據(jù)后臺(tái)數(shù)據(jù)發(fā)生改變,如果后臺(tái)返回的標(biāo)題為空,那么就不顯示該列的內(nèi)容.反之則顯示該列的所有數(shù)據(jù).
部分代碼如下:
執(zhí)行上圖出現(xiàn)的效果圖如下:
那么就會(huì)出現(xiàn)上圖的效果,也就是v-show沒能隱藏標(biāo)題值為null的那列數(shù)據(jù)
b.解決方法:
將v-show改為v-if即可實(shí)現(xiàn)圖一中的效果.
c.總結(jié)(個(gè)人見解):
由于el-table-column會(huì)生成多行標(biāo)簽元素,根據(jù)v-show是不支持template語法的,推斷出v-show不能顯示隱藏多個(gè)元素?不知是否
可以這樣理解,望大神告知!所以這種情況下只能用v-if來實(shí)現(xiàn).
另外補(bǔ)充,在渲染多個(gè)元素時(shí)候可以把一個(gè)<template>
元素作為包裝元素,并在上面使用v-if進(jìn)行條件判斷,最終的渲染并不會(huì)包含這個(gè)元素.同時(shí),v-show
不支持<template>
語法.
以上是“vuejs中v-if和v-show的區(qū)別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。