Vue--v-show和v-if

Vue--v-show和v-if,第1张

v-show和v-if目录 v-show和v-iftemplate

v-show和v-if

v-show与v-if的区别就是,v-show如果值为false的时候只是添加了一个样式display:none,而v-if直接标签都没有,相比来说show的话一般应用在需要频繁切换的场合,if一般在一次性场合使用(实际开发过程中,v-if用的比较多),这是因为,v-show只是修改了display,而v-if是不断的在dom里面增加以及删除节点。当然不管是哪个,都可以修改为true或者false来决定是显示还是隐藏。

<div id="testBox">
    <div v-show="isShow">{{name}}</div>
    <button @click="changeShow">显示/隐藏</button>
    <div v-if="isShow">v-if</div>
    <div v-else-if="!isShow">v-else-if</div>
</div>
<script type="text/javascript">
    new Vue({
      el:'#testBox',
      data:{
        name: '野原新之助',
        isShow: true
      },
      methods: {
          changeShow() {
              this.isShow = ! this.isShow;
          }
      },
    })
</script>

注意:
1.v-if以及v-else-if与判断if…else一样的逻辑。
2.同时有多个if,条件都为true也会一起显示。
3.如果条件互斥的话最好用v-if加v-else-if,因为都用v-if会重复判断。
4.还有v-else,也与判断逻辑一致(前面判断都不成立,这里直接v-else,就算加条件也不起作用)。
5.中间不能穿插其他的元素,不然后面的就不执行了,
如下

<button @click="changeShow">显示/隐藏</button>
<div v-if="isShow">v-if</div>
<div></div>
<div v-else-if="!isShow">v-else-if</div>
<div v-else>啥都没有</div>


也报错了,意思就是后面的else…找不到v-if了。

template

用template的好处就是不影响结构。但是只能跟v-if结合使用,不能跟v-show搭配使用。

<div id="testBox">
    <div v-if="isShow">
        <h1>11</h1>
        <h2>22</h2>
        <h3>33</h3>
    </div>
    <template v-if="isShow">
        <h1>44</h1>
        <h2>55</h2>
        <h3>66</h3>
    </template>
</div>
<script type="text/javascript">
    new Vue({
      el:'#testBox',
      data:{
        name: '野原新之助',
        isShow: true
      },
    })
</script>

那么为什么template不能和v-show一起用呢?
因为template是虚拟dom,不会显示在页面上,而v-show是需要对元素进行 *** 作,改变它的display的,没元素就不能 *** 作了。但是v-if只要满足条件就可以显示。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1322995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存