vue中的v-show与v-if区别

984 阅读1分钟

v-if是动态对dom添加或删除dom元素

v-show是对dom元素的display属性进行控制显示隐藏(简单的css切换)


如果子组件使用 v-if 显示隐藏,v-if 的值为 false 时,是获取不到 this.$refs.该子组件的。

性能消耗:v-if有更高的切换消耗;v-show有更高的初始渲染消耗

使用场景:v-if适合运营条件不大可能改变;v-show适合频繁切换

Tips:

(1)如果v-show作用的元素,css文件中display:none,通过v-show进行设置不能显示该元素;

原因:

v-show控制显隐,是通过js代码去修改元素的element style,如果value为false,设置display: none; 如果value为true,设置display: '';于是value为true时,只能将element style中的display效果清除,并不能覆盖css中的display效果;

如下图所示,value=true时,v-show改变的是element.style,由于无效,显示效果由css文件中的display决定。



解决办法:使用v-show的话,在vue解析之前隐藏DOM的话,尽量在style属性里面设置display的值,不要在css文件中。
<ul style="display: none" v-show="show">