v-if
如果条件不成立,不会渲染当前指令所在节点的dom元素,如果需要频繁切换显示隐藏的元素,使用v-if则会出现频繁新增删除节点,在性能上代价比较高
注意:最好不要v-for和v-if同时使用,v-for会比v-if的优先级高,如果连用会把v-if添加到每个元素,会造成性能问题
v-show
无论条件是否成立,dom元素都会被渲染,只是切换当前元素的显示和隐藏,只在初始的时候渲染代价比较高
当需要切换显示组件的时候,我们通常会使用v-if,v-show
使用v-if的时候会导致组件重新挂载,频繁切换的代价过高,而v-show不会让组件重新挂载,但是这样如果需要刷新数据的时候就不太方便,在vue中我们推荐使用动态组件component结合keep-alive,可以友好地缓存组件也可以使用activated、deactivated等生命周期进行数据处理
<keep-alive :include="componentName">
<component :is="componentName"></component>
</keep-alive>