vue中v-show和v-if的異同及v-show用法
一、官方解釋:
1.v-if 是“真正”的條件渲染,因?yàn)樗鼤?huì)確保在切換過程中條件塊內(nèi)的事件監(jiān)聽器和子組件適當(dāng)?shù)乇讳N毀和重建。
2.v-if 也是惰性的:如果在初始渲染時(shí)條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r(shí),才會(huì)開始渲染條件塊。
3.相比之下,v-show 就簡(jiǎn)單得多——不管初始條件是什么,元素總是會(huì)被渲染,并且只是簡(jiǎn)單地基于 CSS 進(jìn)行切換。
4.一般來說,v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-
show 較好;如果在運(yùn)行時(shí)條件很少改變,則使用 v-if 較好。
二、個(gè)人理解:
1.相同點(diǎn):v-show和v-if都能控制元素的顯示和隱藏。
2.不同點(diǎn):
•實(shí)現(xiàn)本質(zhì)方法不同 ◦v-show本質(zhì)就是通過設(shè)置css中的display設(shè)置為none,控制隱藏
◦v-if是動(dòng)態(tài)的向DOM樹內(nèi)添加或者刪除DOM元素
•編譯的區(qū)別 ◦v-show其實(shí)就是在控制css
◦v-if切換有一個(gè)局部編譯/卸載的過程,切換過程中合適地銷毀和重建內(nèi)部的事件監(jiān)聽和子組件
•編譯的條件 ◦v-show都會(huì)編譯,初始值為false,只是將display設(shè)為none,但它也編譯了
◦v-if初始值為false,就不會(huì)編譯了
•性能 ◦v-show只編譯一次,后面其實(shí)就是控制css,而v-if不停的銷毀和創(chuàng)建,故v-show性能更好一點(diǎn)。
◦注意點(diǎn):因?yàn)関-show實(shí)際是操作display:" "或者none,當(dāng)css本身有display:none時(shí),v-show無法讓顯示
◦總結(jié):如果要頻繁切換某節(jié)點(diǎn)時(shí),使用v-show(無論true或者false初始都會(huì)進(jìn)行渲染,此后通過css來控制顯示隱藏,因此切換開銷比較小,初始開銷較大),如果不需要頻繁切換某節(jié)點(diǎn)時(shí),使用v-if(因?yàn)閼屑虞d,初始為false時(shí),不會(huì)渲染,但是因?yàn)樗峭ㄟ^添加和刪除dom元素來控制顯示和隱藏的,因此初始渲染開銷較小,切換開銷比較大)
vue指令之v-show的用法
1、判斷謀個(gè)元素是否顯示或隱藏
<el-button v-show="list.power == 1" @click="toUpload" class="toUpload" type="primary">去上傳<i class="el-icon-upload el-icon--right"></i></el-button>
通過接口里的參數(shù)list.power是否等于1,如果等于1,則為“true”,否則為“false”,然后v-show指令,等于true的時(shí)候顯示,false的時(shí)候隱藏。
2、三目運(yùn)算符判斷
<a class="warn" v-show="true ? item.ai != null : item.ai == null" :href="'http://172.168.80.149:14081/gateway/upload/upload/downloadFile?url='+item.urlai">AI</a>
其實(shí)這個(gè)也可以簡(jiǎn)寫成第一種形式
<a class="warn" v-show="!item.ai == null" :href="'http://172.168.80.149:14081/gateway/upload/upload/downloadFile?url='+item.urlai">AI</a>
這樣更簡(jiǎn)單哦
總結(jié)
以上所述是小編給大家介紹的vue中v-show和v-if的異同及v-show用法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Spring Boot/VUE中路由傳遞參數(shù)的實(shí)現(xiàn)代碼
在路由時(shí)傳遞參數(shù),一般有兩種形式,一種是拼接在url地址中,另一種是查詢參數(shù)。這篇文章主要介紹了Spring Boot/VUE中路由傳遞參數(shù),需要的朋友可以參考下2018-03-03Vue.js實(shí)現(xiàn)簡(jiǎn)單計(jì)時(shí)器應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)簡(jiǎn)單計(jì)時(shí)器應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09vue如何利用axios調(diào)用后臺(tái)api接口
這篇文章主要介紹了vue如何利用axios調(diào)用后臺(tái)api接口問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07