Vue 中v-if 和v-show的异同

745 阅读1分钟

更多详情请前往:Vue官方API

  1. 相同点:
    两者都是根据表达式的真假值来进行判断;当条件变化时,指令都会触发过渡效果。

  2. 区别:
    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。


【小小记录,学无止境,有错望纠】