Vue--v-show和v-if

v-show和v-if目录

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只要满足条件就可以显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值