v-if和v-show的区别
-
v-if会控制组件销毁和重建,且v-if是惰性的,如果条件为假不会创建组件
-
v-show则是无论初始条件是什么,元素总是会渲染,只是通过css控制是否展示
适用场景
一般来说,v-if有更高的切换开销,而v-show有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show较好;如果在运行时条件很少改变,且初始条件为假,则使用v-if较好。
v-if和v-show使用时的一些问题
v-show不容易处理条件快速变化的情况
如果条件快速多次变化时,比如,从false变成true,又立刻变成false时。(这里的快速指的是极快的速度,比如连续调用两个方法,分别使条件变成true和false)
v-show由于频繁进行DOM/CSS 操作,有可能导致显示出问题,比如条件已经从false变成true又切换回了false,v-show可能会按照true进行处理。而v-if能处理这种情况,但这也意味着更高的计算成本在组件的创建和销毁上。
v-if在处理条件多次变化的情况时,可能导致位置变化
而v-if由于控制组件销毁和重建,在处理慢速多次的条件变化时,可能会导致组件渲染的位置和之前不一样(在使用elementui的组件时遇到过这种情况)。