vue中v-show和v-if的異同及v-show用法
一、官方解釋:
1.v-if 是“真正”的條件渲染,因為它會確保在切換過程中條件塊內(nèi)的事件監(jiān)聽器和子組件適當(dāng)?shù)乇讳N毀和重建。
2.v-if 也是惰性的:如果在初始渲染時條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r,才會開始渲染條件塊。
3.相比之下,v-show 就簡單得多——不管初始條件是什么,元素總是會被渲染,并且只是簡單地基于 CSS 進(jìn)行切換。
4.一般來說,v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-
show 較好;如果在運行時條件很少改變,則使用 v-if 較好。
二、個人理解:
1.相同點:v-show和v-if都能控制元素的顯示和隱藏。
2.不同點:
•實現(xiàn)本質(zhì)方法不同 ◦v-show本質(zhì)就是通過設(shè)置css中的display設(shè)置為none,控制隱藏
◦v-if是動態(tài)的向DOM樹內(nèi)添加或者刪除DOM元素
•編譯的區(qū)別 ◦v-show其實就是在控制css
◦v-if切換有一個局部編譯/卸載的過程,切換過程中合適地銷毀和重建內(nèi)部的事件監(jiān)聽和子組件
•編譯的條件 ◦v-show都會編譯,初始值為false,只是將display設(shè)為none,但它也編譯了
◦v-if初始值為false,就不會編譯了
•性能 ◦v-show只編譯一次,后面其實就是控制css,而v-if不停的銷毀和創(chuàng)建,故v-show性能更好一點。
◦注意點:因為v-show實際是操作display:" "或者none,當(dāng)css本身有display:none時,v-show無法讓顯示
◦總結(jié):如果要頻繁切換某節(jié)點時,使用v-show(無論true或者false初始都會進(jìn)行渲染,此后通過css來控制顯示隱藏,因此切換開銷比較小,初始開銷較大),如果不需要頻繁切換某節(jié)點時,使用v-if(因為懶加載,初始為false時,不會渲染,但是因為它是通過添加和刪除dom元素來控制顯示和隱藏的,因此初始渲染開銷較小,切換開銷比較大)
vue指令之v-show的用法
1、判斷謀個元素是否顯示或隱藏
<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的時候顯示,false的時候隱藏。
2、三目運算符判斷
<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>
其實這個也可以簡寫成第一種形式
<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é)
以上所述是小編給大家介紹的vue中v-show和v-if的異同及v-show用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Spring Boot/VUE中路由傳遞參數(shù)的實現(xiàn)代碼
在路由時傳遞參數(shù),一般有兩種形式,一種是拼接在url地址中,另一種是查詢參數(shù)。這篇文章主要介紹了Spring Boot/VUE中路由傳遞參數(shù),需要的朋友可以參考下2018-03-03