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指令。例如:用于显示和隐藏某些操作面板或对话框、切换菜单等。

TextIn Tools
TextIn Tools

是一款免费在线OCR工具,包含文字识别、表格识别,PDF转文件,文件转PDF、其他格式转换,识别率高,体验好,免费。

下载

当需要根据复杂逻辑判断是否需要渲染某些元素,或者需要动态创建或移除元素时,可以选用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框架提供一些帮助。

相关专题

更多
excel制作动态图表教程
excel制作动态图表教程

本专题整合了excel制作动态图表相关教程,阅读专题下面的文章了解更多详细教程。

20

2025.12.29

freeok看剧入口合集
freeok看剧入口合集

本专题整合了freeok看剧入口网址,阅读下面的文章了解更多网址。

65

2025.12.29

俄罗斯搜索引擎Yandex最新官方入口网址
俄罗斯搜索引擎Yandex最新官方入口网址

Yandex官方入口网址是https://yandex.com;用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

197

2025.12.29

python中def的用法大全
python中def的用法大全

def关键字用于在Python中定义函数。其基本语法包括函数名、参数列表、文档字符串和返回值。使用def可以定义无参数、单参数、多参数、默认参数和可变参数的函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

16

2025.12.29

python改成中文版教程大全
python改成中文版教程大全

Python界面可通过以下方法改为中文版:修改系统语言环境:更改系统语言为“中文(简体)”。使用 IDE 修改:在 PyCharm 等 IDE 中更改语言设置为“中文”。使用 IDLE 修改:在 IDLE 中修改语言为“Chinese”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

16

2025.12.29

C++的Top K问题怎么解决
C++的Top K问题怎么解决

TopK问题可通过优先队列、partial_sort和nth_element解决:优先队列维护大小为K的堆,适合流式数据;partial_sort对前K个元素排序,适用于需有序结果且K较小的场景;nth_element基于快速选择,平均时间复杂度O(n),效率最高但不保证前K内部有序。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

12

2025.12.29

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

134

2025.12.29

抖音网页版入口在哪(最新版)
抖音网页版入口在哪(最新版)

抖音网页版可通过官网https://www.douyin.com进入,打开浏览器输入网址后,可选择扫码或账号登录,登录后同步移动端数据,未登录仅可浏览部分推荐内容。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

63

2025.12.29

快手直播回放在哪看教程
快手直播回放在哪看教程

快手直播回放需主播开启功能才可观看,主要通过三种路径查看:一是从“我”主页进入“关注”标签再进主播主页的“直播”分类;二是通过“历史记录”中的“直播”标签页找回;三是进入“个人信息查阅与下载”里的“直播回放”选项。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

18

2025.12.29

热门下载

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

精品课程

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

共42课时 | 5.7万人学习

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

共26课时 | 1.4万人学习

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

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