v-if与v-show的区别
Posted windrunnermax
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了v-if与v-show的区别相关的知识,希望对你有一定的参考价值。
v-if与v-show的区别
v-if
指令与v-show
指令都可以根据值动态控制DOM
元素显示隐藏,v-if
和v-show
属于Vue
的内部常用的指令,指令的职责是当表达式的值改变时把某些特殊的行为应用到DOM
上。
描述
v-if
v-if
指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回truthy
值的时候被渲染。
<div v-if="show">show</div>
<div v-else>hide</div>
v-show
v-show
指令用法大致一样,不同的是带有v-show
指令的元素始终会被渲染并保留在DOM
中,v-show
只是简单地切换元素的CSS property display
。
<div v-show="show">show</div>
区别
- 实现方式:
v-if
是动态的向DOM
树内添加或者删除DOM
元素,v-show
是通过设置DOM
元素的display
样式属性控制显隐。 - 编译过程:
v-if
切换有一个局部编译卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件,v-show
只是简单的基于CSS
切换。 - 编译条件:
v-if
是惰性的,如果初始条件为假,则什么也不做,只有在条件第一次变为真时才开始局部编译,v-show
是在任何条件下都被编译,然后被缓存,而且DOM
元素保留。 - 性能消耗:
v-if
有更高的切换消耗,v-show
有更高的初始渲染消耗。 - 使用场景:
v-if
适合条件不太可能改变的情况,v-show
适合条件频繁切换的情况。
每日一题
https://github.com/WindrunnerMax/EveryDay
参考
https://cn.vuejs.org/v2/guide/conditional.html#v-if
https://www.cnblogs.com/dengyao-blogs/p/11378228.html
https://cn.vuejs.org/v2/guide/conditional.html#v-show
以上是关于v-if与v-show的区别的主要内容,如果未能解决你的问题,请参考以下文章