vue基础:v-show 与 v-if 有什么区别?

172 阅读1分钟

1.本质方法区别

v-show本质就是标签display设置为none,控制隐藏

v-if是动态的向DOM树内添加或者删除DOM元素

2.编译的区别

v-show其实就是在控制css

v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件

3.编译的条件

v-show都会编译,初始值为false,只是将display设为none,但它也编译了

v-if初始值为false,就不会编译了

4.性能区别

v-show只编译一次,后面其实就是控制css,而v-if不停的销毁和创建,故v-show性能更好一点。

5.用法区别

v-if更灵活,例如用来专门显示下标索引为偶数的数据,或者用来进行多层逻辑判断

<div v-for="(item,index) in listData" v-if="index%2==0"></div>
<div v-for="(item,index) in listData">
	   	 <div v-if="index ===1">11111</div>
	   	 <div v-else-if="index ===2">2222</div>
	   	 <div v-else>33333</div>
	   </div>

因此,在实际开发中,显示状态变化频繁的情况下应该使用v-show,以保持树的稳定;显示状态变化较少时应该使用v-if,以减少树的节点和渲染量。