更多详情请前往:Vue官方API
- 相同点:
两者都是根据表达式的真假值来进行判断;当条件变化时,指令都会触发过渡效果。 - 区别:
v-show: 使用v-show是根据表达式的真假,切换元素的CSS属性:display (false则为none)。也就是说以v-show包裹的部分,不管表达式的真假,里面的元素都已经渲染好了的,只是根据给的表达式真假来切换display是不是为none 而已。
v-if: v-if 是根据表达式的真假值来渲染/销毁包裹在v-if里面的数据绑定或组件。也就是说,如果模板在渲染的时候,v-if里面的表达式为false,则在模板被渲染好的时候,v-if里面包裹的一切都没有被渲染出来,不存在于DOM中。当表达式里的值变为true的时候才进行重新渲染。
官方:
- 可能会遇到点击按钮在v-if 外面,而点击按钮要显示的元素是在v-if 里面,如果v-if 条件变为false, v-if 里面的元素已经被销毁,点击事件便不会触发。
- 也可能遇到v-if从true变为false,在变为true的过程中,v-if 条件代码块里面,有些事件在这个过程可能被销毁,导致为true的时候也没能被触发,如找不到原因,改用v-show。
【小小记录,学无止境,有错望纠】