【VUE入门级&温故知新】一文向您详细介绍~条件渲染(选项式API)

大家好,我是DX3906

🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘大前端领域、真诚分享知识与智慧的小天地!🎇

前面和大家分享了《如何从零开始创建一个 Vue 应用》

                             《VUE模板语法(超详细讲解)》

                             《一文向您详细介绍~Vue响应式基础(选项式API)》

                             《一文向您详细介绍~Vue计算属性computed(选项式API)》

                             《一文向您详细介绍~Class类 与 Style样式 绑定(选项式API)》

今天和大家共同学习一下Vue基于组合式API的条件渲染

基本概述

在vue.js中,‌条件渲染是一种根据特定条件决定是否渲染某个元素或组件的技术。Vue提供了多种指令来实现条件渲染,包括v-ifv-elsev-else-ifv-show。这些指令允许开发者根据应用程序的状态动态地改变页面的内容。

 

v-if

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

<h1 v-if="awesome">Vue is awesome!</h1>

v-else

你也可以使用 v-else 为 v-if 添加一个“else 区块”。

<button @click="awesome = !awesome">Toggle</button>

<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else>Oh no 😢</h1>

一个 v-else 元素必须跟在一个 v-if 或者 v-else-if 元素后面,否则它将不会被识别。

v-else-if

顾名思义,v-else-if 提供的是相应于 v-if 的“else if 区块”。它可以连续多次重复使用:

<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>
  Not A/B/C
</div>

和 v-else 类似,一个使用 v-else-if 的元素必须紧跟在一个 v-if 或一个 v-else-if 元素后面。

<template> 上的 v-if

因为 v-if 是一个指令,他必须依附于某个元素。但如果我们想要切换不止一个元素呢?在这种情况下我们可以在一个 <template> 元素上使用 v-if,这只是一个不可见的包装器元素,最后渲染的结果并不会包含这个 <template> 元素。

<template v-if="ok">
  <h1>Title</h1>
  <p>Paragraph 1</p>
  <p>Paragraph 2</p>
</template>

v-else 和 v-else-if 也可以在 <template> 上使用。

v-show

另一个可以用来按条件显示一个元素的指令是 v-show。其用法基本一样:

<h1 v-show="ok">Hello!</h1>

不同之处在于 v-show 会在 DOM 渲染中保留该元素;v-show 仅切换了该元素上名为 display 的 CSS 属性。

v-show 不支持在 <template> 元素上使用,也不能和 v-else 搭配使用。

v-if 对比 v-show

v-if 是“真实的”按条件渲染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建。

v-if 也是惰性的:如果在初次渲染时条件值为 false,则不会做任何事。条件区块只有当条件首次变为 true 时才被渲染。

相比之下,v-show 简单许多,元素无论初始条件如何,始终会被渲染,只有 CSS display 属性会被切换。

总的来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要频繁切换,则使用 v-show 较好;如果在运行时绑定条件很少改变,则 v-if 会更合适。

v-if 和 v-for 

同时使用 v-if 和 v-for 是不推荐的,因为这样二者的优先级不明显。

当 v-if 和 v-for 同时存在于一个元素上的时候,v-if 会首先被执行。

结语

🔥如果此文对你有帮助的话,欢迎💗关注、👍点赞、⭐收藏、✍️评论,支持一下博主~ 

  • 35
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Vue.js中的选项API和组合API都是用来定义组件的方,但它们之间有着很大的区别。 选项APIVue.js早期版本中使用的一种定义组件的方。在选项API中,组件定义以一个JavaScript对象的形呈现,包括data、methods、computed、watch等属性和方法。这种方比较简单易懂,适合较小的组件,但是在组件逻辑较为复杂时,选项API的代码会变得冗长难以维护。 组合APIVue.js 3.0版本中引入的一种全新的组件定义方。该API将组件的逻辑拆分成逻辑组合的小函数,使得组件逻辑更加清晰、易于维护。组合API主要包括setup函数、响应API、生命周期钩子函数等。 setup函数是组合API的核心,它是一个在组件创建之前被调用的函数。setup函数可以返回一个对象,该对象中包含了组件的data、methods、computed、watch等属性和方法。与选项API不同的是,setup函数中不存在this上下文,而是通过传入的参数来访问组件实例。 响应API是组合API的另一个重要特性,它可以让组件中的数据具有响应的特性。使用响应API创建的数据可以自动更新视图,而不需要手动调用更新函数。 生命周期钩子函数在组合API中的使用方选项API相似,不同的是,生命周期钩子函数中的this上下文不再指向组件实例,而是需要通过传入的参数来访问组件实例。 综上所述,选项API和组合API都是Vue.js中定义组件的方,但是它们之间有着很大的区别。选项API适用于简单的组件,而组合API则适用于复杂的组件,它可以更好地拆分组件的逻辑,使得代码更加清晰、易于维护。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻找DX3906

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值