关于vuejs中v-if和v-show的区别及v-show不起作⽤问题
1.官⽹概念描述
v-if 是'真正的'条件渲染,因为它会确保在切换过程中条件块内的事件和⼦组件适当地被销毁和重建.
v-if 也是惰性的,如果在初始渲染时条件为假,那么什么都不做- - 直到条件第⼀次为真的时候才会开始渲染条件块,相⽐之下,v-show就简单得多- - 不管初始条件是什么,元素总会被渲染,并且只是简单的基于css进⾏切换.
⼀般来说,v-if 有更⾼的切换开销,⽽ v-show 有更⾼的出事渲染开销.因此,如果需要⾮常频繁的切换,那么使⽤v-show好⼀点;如果在运⾏时条件不太可能改变,则使⽤v-if 好点.
2.实践结果
代码运行js特效摘录: 如果⽤v-if的话,整个dom结构压根就不会出现在页⾯上,如果是⽤v-show的话,要视后⾯的条件来定,如果是true,则显⽰,如果为false,则加上style=”display:none”. 所以呢,如果是组件之类的⼤块头,个⼈觉得⽤v-if更好⼀些,如果是⼀些暂时性隐藏,⼀会要显⽰的,还是v-show更⽅便。对于v-style和v-show来⽐较,v-show相当于是v-style=”display:none”和v-
style=”display:block”的快捷⽅式。
1. v-show不起作⽤问题
最近在⽤vue_element-ui开发多页⾯应⽤,其中遇到v-show不起作⽤问题.
a.问题描述,如下图(预想达到的效果),其中表格数据是动态变化的,包括标题也会根据后台数据发⽣改变,如果后台返回的标题为空,那么就不显⽰该列的内容.反之则显⽰该列的所有数据.
部分代码如下:
执⾏上图出现的效果图如下:
那么就会出现上图的效果,也就是v-show没能隐藏标题值为null的那列数据
b.解决⽅法:
将v-show改为v-if即可实现图⼀中的效果.
c.总结(个⼈见解):
由于el-table-column会⽣成多⾏标签元素,根据v-show是不⽀持template语法的,推断出v-show不能显⽰隐藏多个元素?不知是否
可以这样理解,望⼤神告知!所以这种情况下只能⽤v-if来实现.
另外补充,在渲染多个元素时候可以把⼀个<template>元素作为包装元素,并在上⾯使⽤v-if进⾏条件判断,最终的渲染并不会包含这个元素.同时,v-show不⽀持<template>语法.
总结
以上所述是⼩编给⼤家介绍的关于vuejs中v-if和v-show的区别及v-show不起作⽤问题,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论