0

0

Vue文档中的条件渲染函数实例分析

PHPz

PHPz

发布时间:2023-06-21 10:09:39

|

1539人浏览过

|

来源于php中文网

原创

vue是一款非常流行的javascript框架,它提供了一些方便开发者的工具和功能,让开发者可以更方便地构建复杂的web应用程序。其中,条件渲染函数是vue中一个非常有用的功能,可以帮助开发者动态地控制和渲染页面上的元素。在本文中,我们将对vue文档中的条件渲染函数进行分析和实例演示。

一、Vue的条件渲染函数简介

Vue中可以使用v-if和v-show指令来实现条件渲染。这些指令都可以让我们根据条件来控制某些元素是否需要渲染到页面上。

v-if指令是根据表达式的值来判断是否需要渲染元素,如果表达式的值为真,则渲染该元素;否则,不渲染该元素。例如:

这是一个需要被渲染出来的div元素

在上面的例子中,只有当Vue实例的shown属性值为true时,才会在页面上渲染出这个div元素。

立即学习前端免费学习笔记(深入)”;

v-show指令也可以实现元素的条件渲染,但是它的实现方式和v-if有点不同。v-show指令是根据表达式的值来动态改变元素的display属性,如果表达式的值为真,则将元素的display属性设置为block,从而让元素在页面上显示出来;否则,将元素的display属性设置为none,从而让元素在页面上被隐藏起来。例如:

这是一个需要被渲染出来的div元素

在上面的例子中,只要Vue实例的shown属性值为true,这个div元素就会显示出来,否则就会被隐藏起来。

二、v-if和v-show的差异点

虽然v-if和v-show都可以实现元素的条件渲染,但是它们在实现方式上有所区别,主要表现在以下几个方面:

  1. 渲染开销

v-if指令是在每次渲染时都会重新判断条件表达式的值,并且根据该表达式的值来添加或移除元素。因此,当条件表达式的值较为复杂或者元素较多时,v-if的渲染开销会比较大。

v-show指令只是通过动态改变元素的display属性来隐藏或显示元素,不需要重新创建或移除元素,因此渲染开销比较小。但是,在元素的初始渲染时,v-show指令需要先判断条件表达式的值,并根据该值来设置元素的display属性,因此渲染速度可能会比v-if慢一些。

  1. 初始化渲染开销

v-if指令在条件表达式初始为false的情况下,不会进行渲染。只有当条件表达式的值变为true时,才会开始进行渲染。因此,v-if的初始化渲染开销会比v-show小一些。

v-show指令在初始渲染时,会根据条件表达式的值来动态设置元素的display属性,从而决定元素是否显示。因此,v-show的初始化渲染开销会比v-if大一些。

  1. 渲染性能

v-if指令在条件表达式的值变化时,会重新进行判断,并重新创建或移除对应的元素。在只有少量元素需要动态渲染时,v-if的性能会比v-show略好一些。

v-show指令只是通过动态改变元素的display属性来控制元素的显示和隐藏,不需要重新创建或移除元素。因此,在需要频繁切换元素显示和隐藏的情况下,v-show的性能会比v-if好一些。

三、v-if和v-show使用场景的选择

基于上述不同点,我们可以根据实际需求来选择v-if和v-show。

当需要频繁切换元素的显示和隐藏时,可以选择使用v-show指令。例如:用于显示和隐藏某些操作面板或对话框、切换菜单等。

造次
造次

Liblib打造的AI原创IP视频创作社区

下载

当需要根据复杂逻辑判断是否需要渲染某些元素,或者需要动态创建或移除元素时,可以选用v-if指令。例如:根据用户的登录状态来渲染页面中的某些元素、根据用户权限来渲染页面中的某些操作按钮等。

四、实例分析

下面我们来基于一个实例来演示v-if和v-show的使用。

假设我们需要在页面上展示一份商品列表。列表中分别包含商品的名称、价格、库存及购买按钮等信息。同时,该列表还需要提供一个筛选功能,使用户可以根据不同条件来查看不同的商品信息。具体实现如下:

  1. 定义商品列表数据

首先我们需要定义一个包含商品信息的数组,这里我们暂时假定数组中已经包含了10个商品的信息。该数组的格式如下:

goodsList: [
  {
    name: "商品A",
    price: 100,
    stock: 50
  },
  {
    name: "商品B",
    price: 200,
    stock: 80
  },
  ...
]
  1. 定义筛选条件和筛选结果数据

为了实现筛选功能,我们需要定义一个表单,该表单中包含了用于筛选的条件输入框。通过这些输入框,用户可以输入不同的筛选条件来查看不同的商品信息。

同时,我们还需要定义一个变量来存储筛选后的结果,从而将不符合筛选条件的商品过滤掉。 筛选条件和筛选结果的定义如下:

filterForm: {
  name: "",
  minPrice: "",
  maxPrice: ""
},
filteredGoodsList: []
  1. 实现筛选逻辑

为了实现筛选功能,我们需要在Vue实例中定义一个方法,该方法会在每次需要筛选时被调用。该方法会根据用户输入的筛选条件,从商品列表中筛选出符合条件的商品,并将结果存储到filteredGoodsList中。

具体实现代码如下:

methods: {
  filterGoodsList() {
    let filterName = this.filterForm.name.toLowerCase()
    let filterMinPrice = this.filterForm.minPrice ? parseInt(this.filterForm.minPrice) : Number.MIN_SAFE_INTEGER
    let filterMaxPrice = this.filterForm.maxPrice ? parseInt(this.filterForm.maxPrice) : Number.MAX_SAFE_INTEGER
    this.filteredGoodsList = this.goodsList.filter((item) => {
      let itemName = item.name.toLowerCase()
      return itemName.indexOf(filterName) !== -1 && item.price >= filterMinPrice && item.price <= filterMaxPrice
    })
  }
}

在这个方法中,我们首先将用户输入的筛选条件分别提取出来,并将maxPrice和minPrice转换为数字类型。然后,我们使用JavaScript数组的filter方法,从商品列表中筛选出符合条件的商品。可以看到,我们使用了itemName.indexOf(filterName) !== -1这种方式,即通过JavaScript中字符串的indexOf方法来检查itemName是否包含了filterName这个子串。如果包含,则返回true,表示该商品符合筛选条件;否则返回false,表示该商品不符合筛选条件。最后,我们将筛选结果存储到filteredGoodsList中。

  1. 实现列表渲染

我们可以通过v-for指令来遍历filteredGoodsList数组,并将每个数组元素渲染成一个商品信息块。具体实现代码如下:

{{ item.name }}
{{ item.price }}
{{ item.stock }}
购买
已售罄

在这个代码中,我们将v-for指令绑定到filteredGoodsList数组上,这样就可以遍历这个数组中的所有元素。我们使用: key="index"来为每个元素设置一个唯一的key值,以便Vue能够高效地对列表进行更新。

在每个商品信息块中,我们使用v-show和v-if指令来根据不同的商品库存信息来动态展示不同的元素。如果该商品库存大于0,则会显示购买按钮;否则,会显示“已售罄”的文字提示。

  1. 实现筛选表单和筛选按钮

最后,我们需要在页面上添加一个筛选表单,让用户可以输入不同的筛选条件来观察不同的商品信息。表单的代码如下:

-

在这个代码中,我们使用了v-model指令将表单元素和Vue实例中的filterForm对象绑定在一起,从而实现了双向数据绑定。我们还添加了一个筛选按钮,在用户点击按钮时会触发filterGoodsList方法,从而重新进行商品列表的筛选和渲染。

六、总结

通过以上分析和实例演示,我们了解了Vue文档中的条件渲染函数的基本知识和使用方法,以及v-if和v-show指令在渲染开销、初始化渲染开销和渲染性能等方面的不同表现。最后,我们还运用条件渲染函数的知识,实现了一个商品列表及其筛选功能的实例。相信这些内容能够对您学习和使用Vue框架提供一些帮助。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

8

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

6

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

16

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

3

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

5

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

23

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

9

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

16

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

6

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 7.2万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号