·

Vue3中的条件渲染(v-if、v-else-if、v-else 以及 v-show)的使用(实例详解)

发布时间:2024-08-29 21:18:49阅读量:245
转载请注明来源

v-if v-else v-else-if

v-if指令用于条件性地渲染一块内容,这块内容只会在指令的表达式返回truth值的时候被渲染。

<script setup>
const have = ref(true)
</script>
<template>
	<div id="app">
		<div v-if = "have">我可以被显示出来</div>
	</div>
</template>

当have的值为true时,div块被显示。

而当have为false

const have = ref(false)

页面无显示,且具有v-if = “have”的div块不存在在html结构中。

也可以用v-else添加一个“else模块”,和js的语法相同,当if条件不成立,则显示else模块内容。

在vue2.1.0新增的v-else-if,更是可以与上面两个共同使用,但是v-else和v-else-if都必须紧跟在v-if的后面使用(v-else-if可以跟在v-else-if后面)

例子:

<script setup>
const type = ref("哎哎哎")
</script>
<template>
	<div id="app">
		<div v-if="type==='A' ">A</div>
		<div v-else-if="type=='B'">B</div>
		<div v-else-if="type=='C'">C</div>
		<div v-else-if="type=='D'">D</div>
		<div v-else>not A/B/C/D</div>
	</div>
</template>

执行结果:

这里其他的div在html结构中已不存在。

<template>元素上使用v-if条件渲染分组

因为v-if是一个指令,所以必须将它添加到一个元素上,但是如果想切换多个元素呢???此时就可以把一个< template>元素当不可见的包裹元素,并在上面使用v-if,最终的渲染结果将不包含< template>元素。

例子:

<script setup>
const ok = ref(true)
</script>
<template>
	<div id="app">
		<template v-if="ok">
			<h1>哈哈哈哈</h1>
			<p>这是一个段落</p>
			<p>这是一个段落</p>
		</template>
	</div>
</template>

运行结果:

v-show

v-show是另一个用于根据条件展示元素的选项,,用法和v-if大致相同

<h1 v-show="ok">hello</h1>

不同的是带有v-show的元素时钟会被渲染并且保留在dom中,v-show只是简单的切换原色的css属性display

注意)v-show不支持template元素,也不支持v-else

例子:

<script setup>
const ok = ref(false)
</script>
<template>
	<div id="app">
		<div v-show="ok">hhhhhhhhhhh</div>
	</div>
</template>

不显示但存在

v-if和v-show的区别

v-if

  • 真正的条件渲染,因为它会确保在切换过程中事件内的**事件监听器和子组件适当得被销毁和重建。
  • 是有惰性的:如果在初始渲染的时候事件为假,则什么也不做,直到条件第一次变为真的时候,才会开始渲染条件块

v-show

相比v-show就简单的多,不管初始条件是什么,元素始终都会被渲染,而且只是简单地基于css进行切换。

两者的使用

一般来说,v-if有更高的切换开销,而v-show有更高的初始渲染开销,因此,如果需要非常频繁地切换,则用v-show更好一些;如果运行的条件很少改变,则用v-if更好。

0 人喜欢

评论区

暂无评论,来发布第一条评论吧!

弦圈热门内容

数说心语 | 一直在出发

数说心语#一直在出发#亲爱的同学们你是否因为昨日事务的束缚明天前途的焦虑而停下了当下探索的脚步在此数院团学君为同学们推荐汪国真先生的《我喜欢出发》愿大家不要失去随时出发的勇气《我喜欢出发》汪国真我喜欢出发。凡是到达了的地方,都属于昨天。哪怕那山再青,那水再秀,那风再温柔。太深的流连便成了一种羁绊,绊住的不仅有双脚,还有未来。怎么能不喜欢出发呢?没见过大山的巍峨,真是遗憾;见了大山的巍峨,没见过大海的浩瀚,仍然遗憾;见了大海的浩瀚,没见过大漠的广袤,依旧遗憾;见了大漠的广袤,没见过森林的神秘,还是遗憾。世界上有不绝的风景,我有不老的心情。我自然知道,大山有坎坷,大海有浪涛,大漠有风沙,森林有猛兽。即便这样,我依然喜欢。打破生活的平静便是另一番景致,一种属于年轻的景致。真庆幸,我还没有老。即便真老了又怎么样,不是有句话叫老当益壮吗?于是,我还想从大山那里学习深刻,我还想从大海那里学习勇敢,我还想从大漠那里学习沉着,我还想从森林那里学习机敏。我想学着品味一种缤纷的人生。人能走多远?这话不是要问两脚而是要问志向;人能攀多高?这事不是要问双手而是要问意志。于是,我想用青春的热血给自己树起一个高远 ...

你对自己的哪本数学启蒙书印象最深刻?

相信每一个喜欢数学的人,都曾被某几本书中描述的数学内容所深深震撼,从而一发不可收拾的踏上数学这条“不归路”😂。 我至今还记得初三高一的时候,自己第一次看代数几何的那种震撼(GTM52),当时的我涉猎过泛函分析、范畴论、微分几何等数学分支,但唯有代数几何给予我心灵上最大的震撼。 我为代数几何这个艰深、深奥、广阔、神秘的领域所深深吸引,加上当时知道了Grothendieck的事迹,让我下定决心攻克代数几何的重重难关,只为更接近心中的“神”😂。 不知道你的数学启蒙书是哪几本呢?其中哪本书你印象最深刻呢?