VUE 中的 v-for 和 v-if 是否可以共存

news/2024/7/10 2:50:00 标签: javascript, 面试, vue

VUE 中的 v-for 和 v-if 是否可以共存

    • 前言
    • 1、面试
    • 2、正确回答
    • 3、总结
      • 总结:

前言

要成功,先发疯,头脑简单往前冲!

三金四银,金九银十,多学知识,也不能埋头苦干,要成功,先发疯,头脑简单往前冲!
最近发现很多人也在问我v-for 和 v-if 面试问题,那么下面我就个大家分析一下!

在这里插入图片描述

1、面试


javascript">提到这个问题,很多人肯定会脱口而出:
	
 1. Vue2 中 不可以
 2. Vue3 中 可以

再往深问,可能少部分人会回答出:

1. Vue2 中 v-for 优先级比 v-if2. Vue3 中 v-if 优先级比 v-for

但是其实很多人都是背的,具体为啥会这样,很多人都没搞清楚,稍微再往深一问,95%的人就回答不出来了~

分析Vue2:

在项目中使用 v-for 和 v-if 共存与一个标签上,Vue2 中肯定会警告我们,不建议这么做,但是为啥不建议,根本没几个人知道~

在这里插入图片描述

javascript">	可以看到在 Vue2 中,会先循环,然后在循环中去判断,判断为真则正常渲染,
	判断为假则执行 _e 函数,_e函数就是注释的意思,就是把判断为假的节点注释掉,也就是:
	1、先走 v-for 循环 32、在循环体中走 v-if 判断
	3、判断 item === 2 则正常渲染,item === 2 则把这个节点注释掉
	所以最终选出出来 13 两个节点

因为其实我们只需要渲染2个节点,但是最终还是循环了3次,造成了性能浪费,也就是 v-for 优先级高于 v-if,共存时会造成性能浪费

分析Vue3:

但是在 Vue3 中,v-for 和 v-if 却是可以共存的,为什么呢?我们还是拿最简单的代码来分析

在这里插入图片描述

可以到这个网站:**https://play.vuejs.org/**,看到解析后的代码

在这里插入图片描述
在这里插入图片描述

javascript">可以看到,跟 Vue2 不同的是,Vue3 中是先走判断,然后再走循环的,也就是:
	1、先走 v-if 判断
	2、如果 item !== 2,就去走循环也就是 v-for
	3、如果 item == 2,就执行 createCommandVNode,创建一个注释节点
	也就是在 Vue3 中,v-if 优先级是高于 v-for 的,真正循环的只有13这两个节点,
	这提高了性能!
	因为在 v-for 和 v-if 共存的时候,Vue3 会在底层帮我们转换成

在这里插入图片描述

2、正确回答

javascript">	1、首先解答完vue2和vue3后的利和弊
	2、给出如何解决这个问题的思路,如使用computed处理

3、总结


总结就是不要让 v-if 和 v-for 共存在同一个标签中,遇到这种情况需要使用 computed 去计算,然后再去渲染!

在这里插入图片描述


总结:

前端路上 | 所知甚少,唯善学。
各位小伙伴有什么疑问,欢迎留言探讨。

— 关注我:前端路上不迷路 —





http://www.niftyadmin.cn/n/5335464.html

相关文章

sqlserver2012 跨服务器查询

在 SQL Server 2012 中,跨服务器查询可以通过链接服务器来实现。以下是执行跨服务器查询的步骤: 创建链接服务器: 首先,你需要在 SQL Server 2012 上创建一个链接服务器对象。可以使用系统存储过程 sp_addlinkedserver 来完成这一…

RK3568平台 LT9211转接芯片调试笔记

一.简介 龙讯LT9211是一个高性能转换器,支持MIPI LVDS TTL两两之间转换。 使用此款芯片大部分为MIPI与LVDS进行互相转换。 下图为LT9211的典型应用图: 二.LT9211原理图 三.车载显示器和摄像头系统 四.调试LT9211输出 MIPI数据 (1&#xf…

git报错:Failed to connect to github.com port 443: Timed out

git提交报错 git报错:Failed to connect to github.com port 443: Timed out解决办法 使用ping github.com 发现ping不通修改hosts文件,让主机跳过DNS服务器 直接根据hosts配置信息进行替换域名在ipaddress.com查询Github真实IP地址 打开hosts文件 添加…

eNSP学习——配置通过Telnet登陆系统

实验内容: 模拟公司网络场景。R1是机房的设备,办公区与机房不在同一楼层,R2和R3模拟员工主机, 通过交换机S1与R1相连。 为了方便用户的管理,需要在R1上配置Telnet使员工可以在办公区远程管理机房设备。 为…

云服务器部署Stable Diffusion Webui从0到1总结:反复重启+循环debug

文章目录 在学校服务器部署Stable Diffusion Webui(一)准备工作(二)环境配置(三)git拉取项目到本地(四)运行项目 遇到的问题:(一)使用git clone时…

CloudPanel RCE漏洞复现(CVE-2023-35885)

0x01 产品简介 CloudPanel 是一个基于 Web 的控制面板或管理界面,旨在简化云托管环境的管理。它提供了一个集中式平台,用于管理云基础架构的各个方面,包括虚拟机 (VM)、存储、网络和应用程序。 0x02 漏洞概述 由于2.3.1 之前的 CloudPanel 具有不安全的文件管理器 cook…

蓝桥杯(C++ 矩形总面积 错误票据 分糖果1 三国游戏 分糖果2)

目录 一、矩形总面积 思路: 代码: 二、错误票据 思路: 代码: 三、分糖果1 思路: 代码: 四、三国游戏 思路: 代码: 五、分糖果2 思路: 代码:…

C#MQTT编程08--MQTT服务器和客户端(cmd版)

1、前言 前面完成了winform版,wpf版,为什么要搞个cmd版,因为前面介绍了mqtt的报文结构,重点分析了【连接报文】,【订阅报文】,【发布报文】,这节就要就看看实际报文是怎么组装的,这…