一、v-if、v-else-if、v-else
-
v-if 指令用于条件性地渲染元素;该内容只会在指令的表达式返回真值时才被渲染
-
v-else-if提供的是相应于v-if的else if区块,它可以连续多次重复使用
-
你也可以使用v-else为v-if添加一个else区块
-
v-else和v-else-if指令必须配合v-if指令一起使用 ,否则它将不会被识别,而且语句块中间不能出现无关其他元素
-
v-if支持在"<template>"元素上使用,这只是一个不可见的包装器元素,最后渲染的结果并不会包含这个 "<template>"
App.vue
<script setup>
import { ref } from 'vue';
let isShow = ref(false) //是否显示
let age = ref(20) //年龄
let week = ref(3) //周几
</script>
<!-- 视图区域(view) -->
<template>
是否显示:<input type="checkbox" v-model="isShow">
<!--
v-if:指令表达式为真时,才会渲染该元素
为true时会创建该元素,为false时会销毁该元素
-->
<h3 v-if="isShow">这是一个普通的标题标签</h3>
<hr>
年龄:<input type="range" min="0" max="100" v-model="age">{{ age }}
<!--
v-if:可以配合v-else-if和v-else来搭建多重判断条件,他们中间不要参杂无关紧要的元素
-->
<h1 v-if="age < 18">未成年</h1>
<!-- <span>无关元素</span> -->
<h2 v-else-if="age < 35">青年</h2>
<h3 v-else-if="age < 50">中年</h3>
<h4 v-else>老年</h4>
<hr>
周几:<input type="range" min="1" max="7" v-model="week">{{ week }}
<!--
v-if:可以配合template元素使用,最后渲染的结果并不会包含这个<template></template>元素
-->
<template v-if="week == 1||week == 3||week == 5||week == 7">
<h1>可以游泳</h1>
</template>
<template v-else>
<h1>不可以游泳</h1>
</template>
</template>
<style>
</style>
二、v-show
● v-show按条件显示一个元素的指令
● v-show会在 DOM 渲染中保留该元素
● v-show仅切换了该元素上名为display的 CSS 属性
● v-show不支持在"<template>"元素上使用,也不能和v-else搭配使用
App.vue
<script setup>
import { ref } from 'vue';
let isShow = ref(false) //是否显示
let age = ref(20) //年龄
let week = ref(3) //周几
</script>
<!-- 视图区域(view) -->
<template>
是否显示:<input type="checkbox" v-model="isShow">
<h3 v-show="isShow">这是一个普通的标题标签</h3>
<hr>
年龄:<input type="range" min="0" max="100" v-model="age">{{ age }}
<h1 v-show="age < 18">未成年</h1>
<h2 v-show="age >= 18 && age < 35">青年</h2>
<h3 v-show="age >= 35 && age < 50">中年</h3>
<h4 v-show="age >= 50">老年</h4>
<hr>
周几:<input type="range" min="1" max="7" v-model="week">{{ week }}
<template v-show="week == 1||week == 3||week == 5||week == 7">
<h1>可以游泳</h1>
</template>
<template v-show="week == 2||week == 4||week == 6">
<h1>不可以游泳</h1>
</template>
</template>
<style>
</style>
三、v-if和v-show的区别
● v-if是“真实的”按条件渲染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建
● v-if也是惰性的:如果在初次渲染时条件值为false,则不会做任何事;条件区块只有当条件首次变为true时才被渲染
● v-show元素无论初始条件如何,始终会被渲染,只有 CSS display属性会被切换
● v-if有更高的切换开销,而v-show有更高的初始渲染开销;如果需要频繁切换,则使用v-show 较好;如果在运行时绑定条件很少改变,则v-if会更合适
460

被折叠的 条评论
为什么被折叠?



