码迷,mamicode.com
首页 > 其他好文 > 详细

v-if与v-show的区别与选择

时间:2018-11-14 10:22:10      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:child   运行时   nbsp   mount   The   事件   error   恶心   就会   

 

v-if与v-show的区别与选择

 

官网给的区别

 

v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

 

v-if也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

 

相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

 

一般来说,v-if有更高的切换开销,而 v-show 有更高的初始渲染开销。

 

因此,如果需要非常频繁地切换,则使用 v-show  较好;如果在运行时条件很少改变,则使用 v-if 较好。

 

 

总的来说,

v-if是真正的条件判断,条件为真时子组件才会被调用执行 ,而条件不为真时就会一直不被调用执行,

而v-show是已经被调用执行只是没显示出来,类似于css效果

 

从他两者的区别也可以看出

 

假设我当前的子组件需要被频繁的调用,还是使用v-show比较好,因为这样只是相当于css样式的转换,用户体验好

 

当运行时,如果在运行时条件很少改变,则使用 v-if 较好

 

 

 

还有一件特别恶心的事,在使用better-scroll的时候,如果在v-if 标签上使用better-scroll

会报一个这样的错

[BScroll warn]: Can not resolve the wrapper DOM. Vue better-scroll
[Vue warn]: Error in mounted hook: “TypeError: Cannot read property ‘children’ of undefined”

 

明明已经了DOM节点,为什么还会报错呢????


出错的原因很简单------------------------------>


问题就出在v-if这里,将v-if改为v-show就行了,v-show会渲染它,但是不显示。或者将v-if 里再包一层div 将绑定的元素改为这个新加的div

 

v-if与v-show的区别与选择

标签:child   运行时   nbsp   mount   The   事件   error   恶心   就会   

原文地址:https://www.cnblogs.com/katydids/p/9955985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!