Vue知识点一:v-show和v-if指令的共同点和不同点?

v-show和v-if指令的共同点和不同点?

1.共同点

用来控制DOM元素的显示或隐藏

2.区别

原理:
  • v-show指令:通过控制css中的display设置为none,控制隐藏或显示;元素始终被渲染到HTML,它只是简单的伪元素设置css的style属性,当不满足条件的元素被设置style=“display:none”的样,是通过修改元素的的CSS属性(display)来决定实现显示还是隐藏。
  • v-if指令:v-if是动态的向DOM树内添加或删除DOM元素;满足条件是会渲染到html中,不满足条件时是不会渲染到html中的,是通过操纵dom元素来进行切换显示。
形式:
  • v-if :可以有多种使用形式: 单路分支, 多路分支, 双路分支;
  • v-show:只能写一个单路形式

3.应用场景:

  • 如果要频繁切换某节点,使⽤v-show(切换开销⽐较⼩,初始开销较⼤);
  • 如果不需要频繁切换某节点使⽤v-if(初始渲染开销较⼩,切换开销⽐较⼤)。

4.v-shwo与v-if示例

<!--
 * @Description: v-shwo与v-if代码
 * @Author: HMM
 * @Date: 2021-01-21 19:49:56
-->
<template>
  <div class="test">
    <el-container>
      <el-header>
        <el-button type="primary" @click="setTabNum(1)">切换1</el-button>
        <el-button type="success" @click="setTabNum(2)">切换2</el-button>
        <el-button  @click="testRefs()">测试ref用法</el-button>
      </el-header>
      <el-main>
        <h1>v-show使用:</h1>
        <br />
        <div v-show="tabNum === 1" ref="tabShow1">show - 页面1</div>
        <div v-show="tabNum === 2" ref="tabShow2">show - 页面2</div>
        <br />
        <hr />
        <br />
        <h1>v-if使用:</h1>
        <br />
        <div v-if="tabNum === 1" ref="tabIf1">if - 页面1</div>
        <div v-if="tabNum === 2" ref="tabIf2">if - 页面2</div>
      </el-main>
    </el-container>
  </div>
</template>



<!-- JS -->
<script>
export default {
  data() {
    return {
      tabNum: 1
    };
  },
  methods: {
    /**
     * @description: 切换事件
     * @param {*} num Number类型
     * @return {*}
     */
    setTabNum(num) {
      this.tabNum = num;
    },
    /**
     * @description: 测试ref用法
     * @param {*}
     * @return {*}
     */
    testRefs(){
      console.log('v-show: 1', typeof this.$refs.tabShow1);
      console.log('v-show: 2', typeof this.$refs.tabShow2);
      console.log('v-if: 1', typeof this.$refs.tabIf1);
      console.log('v-if: 2', typeof this.$refs.tabIf2);
    }
  }
};
</script>

参考案例:
v-show和v-if指令
v-show和v-if指令
Vue 中指令 v-show/v-if (条件渲染)的对比与使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值