Vue - 条件渲染

一. v-if 和 v-show

  • v-if :当 isShowfalse 时,内容不存在Dom中,内容是不存在的,
  • v-show :当 isShowfalse 时,内容存在Dom中,是存在的,只是内容被设置 display:none
  • 当频繁进行展示与隐藏的时候,推荐使用 v-show
<template>
  <div class="wrap">
    <div v-if="isShow">Helllo World</div>
    <div v-show="isShow">Helllo World</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isShow: true
    };
  }
};
</script>

<style scoped>
</style>

二. v-if 和 v-else

  • v-ifv-else 要连在一起使用,中间不能有Dom进行分隔
<template>
  <div class="wrap">
    <div v-if="isShow">Helllo World</div>
    <div v-else>Helllo</div>
  </div>	
</template>

<script>
export default {
  data() {
    return {
      isShow: true
    };
  }
};
</script>

<style scoped>
</style>

三. v-if、v-else-if 和 v-else

  • v-ifv-else-ifv-else 要连在一起使用,中间不能有Dom进行分隔
<template>
  <div class="wrap">
    <div v-if="show == 'a'">this is A</div>
    <div v-else-if="show == 'b'">this is B</div>
    <div v-else>this is C</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      show: "a",
    };
  },
};
</script>

<style scoped>
</style>

四. 条件渲染,key 值的使用

  • 原因:Vue在重新渲染页面的时候会尽量的尝试复用已经存在的Dom,如果页面进行重新渲染页面时候发现Dom已经存在,就不会去使用最新的Dom
  • 处理方案:使用key值,设置dom唯一
<template>
  <div class="wrap">
    <div v-if="isShow">
      用户:
      <input type="text" key="username" />
    </div>
    <div v-else>
      邮箱:
      <input type="text" key="email" />
    </div>
    <button @click="update">改变</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isShow: true,
    };
  },
  methods: {
    update() {
      this.isShow = false;
    },
  },
};
</script>

<style scoped>
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值