一、官方解釋:
1.v-if 是“真正”的條件渲染,因為它會確保在切換過程中條件塊內的事件監聽器和子組件適當地被銷毀和重建。
2.v-if 也是惰性的:如果在初始渲染時條件為假,則什么也不做――直到條件第一次變為真時,才會開始渲染條件塊。
3.相比之下,v-show 就簡單得多――不管初始條件是什么,元素總是會被渲染,并且只是簡單地基于 CSS 進行切換。
4.一般來說,v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-
show 較好;如果在運行時條件很少改變,則使用 v-if 較好。
二、個人理解:
1.相同點:v-show和v-if都能控制元素的顯示和隱藏。
2.不同點:
•實現本質方法不同 ◦v-show本質就是通過設置css中的display設置為none,控制隱藏
◦v-if是動態的向DOM樹內添加或者刪除DOM元素
•編譯的區別 ◦v-show其實就是在控制css
◦v-if切換有一個局部編譯/卸載的過程,切換過程中合適地銷毀和重建內部的事件監聽和子組件
•編譯的條件 ◦v-show都會編譯,初始值為false,只是將display設為none,但它也編譯了
◦v-if初始值為false,就不會編譯了
•性能 ◦v-show只編譯一次,后面其實就是控制css,而v-if不停的銷毀和創建,故v-show性能更好一點。
◦注意點:因為v-show實際是操作display:" "或者none,當css本身有display:none時,v-show無法讓顯示
◦總結:如果要頻繁切換某節點時,使用v-show(無論true或者false初始都會進行渲染,此后通過css來控制顯示隱藏,因此切換開銷比較小,初始開銷較大),如果不需要頻繁切換某節點時,使用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>
通過接口里的參數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>
這樣更簡單哦
總結
以上所述是小編給大家介紹的vue中v-show和v-if的異同及v-show用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
新聞熱點
疑難解答