当前位置: 首页 > news >正文

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

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

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

前言

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

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

在这里插入图片描述

1、面试经


提到这个问题,很多人肯定会脱口而出:1. Vue2 中 不可以2. Vue3 中 可以再往深问,可能少部分人会回答出:1. Vue2 中 v-for 优先级比 v-if2. Vue3 中 v-if 优先级比 v-for

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

分析Vue2:

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

在这里插入图片描述

	可以看到在 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/**,看到解析后的代码

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

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

在这里插入图片描述

2、正确回答

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

3、总结


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

在这里插入图片描述


总结:

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

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




相关文章:

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

VUE 中的 v-for 和 v-if 是否可以共存 前言1、面试经2、正确回答3、总结总结: 前言 要成功,先发疯,头脑简单往前冲! 三金四银,金九银十,多学知识,也不能埋头苦干,要成功&#xff0c…...

kubernetes 权限控制

RBAC引入了4个顶级资源对象:Role、ClusterRole:角色,用于指定一组权限;RoleBinding、ClusterRoleBinding:角色绑定,用于将角色(权限)赋予给对象 咱们通过Role可以配置命名空间下资源…...

vue中父组件异步传值,渲染问题

vue中父组件异步传值&#xff0c;渲染问题 父组件异步传值&#xff0c;子组件渲染不出来。有如下两种解决方法&#xff1a; 1、用v-if解决&#xff0c;当父组件有数据才渲染 <Child v-if"dataList && dataList.length > 0" :data-list"dataLis…...

09前后端分离+SSM整合的小案例

前端的Node 后端的Tomcat&#xff0c;是前端程序的容器。前端的npm 后端的maven 1. 导入前端项目 node版本&#xff1a;16.16.0 配置阿里镜像 npm config set registry https://registry.npmjs.org/ 更新npm版本 npm install -g npm9.6.6 用vscode打开解压后的项目 , 右上角…...

模仿ProTable创建ProTable组件

不多说废话直接上代码 父组件 // index.jsx/*** description 此ProTable是根据ProComponents里的ProTable模仿封装的简易版本* */ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useState } from react import { Card, Table } from antd import…...

新品发布 | 多通道总线记录仪TLog1004,是你期待的吗?

新品发布 2024年1月12日&#xff0c;同星智能又发布一款多通道 CAN &#xff08;FD&#xff09;总线、LIN 总线接口logger设备&#xff0c;此款产品在TLog1002基础上进行了升级&#xff0c;同时内置 3 路数字输入和 2 路数字输出&#xff0c;便于多种信号测量和系统集成。可以满…...

Double数据类型保留3位小数

Double scrapGrn scrapQty * Double.parseDouble(lot.getCnvrsnFctr()) / 1000 ; // 保留3位小数 DecimalFormat decimalFormat new DecimalFormat("#.###"); String scrapGrnStr decimalFormat.format(scrapGrn); 345.12344 处理后 为 345.123 34…...

08- OpenCV:形态学操作(膨胀与腐蚀 、提取水平与垂直线)

目录 前言 一、膨胀&#xff08;Dilation&#xff09;与 腐蚀&#xff08;Erosion&#xff09; 二、形态学操作 1、开操作&#xff08;Opening&#xff09; 2、闭操作&#xff08;Closing&#xff09; 3、形态学梯度&#xff08;Morphological Gradient&#xff09; 4、…...

基于JavaWeb+SSM+Vue停车场微信小程序系统的设计和实现

基于JavaWebSSMVue停车场微信小程序系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关…...

VUE---自定义指令

自定义指令&#xff1a;自己定义的指令&#xff0c;可以封装一些dom操作&#xff0c;扩展额外功能。可分为全局注册与 局部注册。 全局注册&#xff08;main.js中注册&#xff09;&#xff1a; Vue.directive(指令名称,{ bind(ele,binding) {}, // 只执…...

开发安全之:Cross-Site Scripting (XSS) 漏洞

近期&#xff0c;我会结合研发云陆续发布开发安全相关的文章&#xff0c;欢迎大家关注&#xff01; Overview echo json_encode($arr)&#xff1a;向一个 Web 浏览器发送了未验证的数据&#xff0c;从而导致该浏览器执行恶意代码。 Details Cross-Site Scripting (XSS) 漏洞…...

代码随想录算法训练营第二十四天| 77. 组合

77.组合 public List<List<Integer>> combine(int n, int k) {if (n < k) {return null;}List<List<Integer>> list new ArrayList<>();List<Integer> path new ArrayList<>();backSource(n, path, list, k);return list;}pu…...

虚拟歌姬学习:DiffSinger,让GitHub下载快的方法!

《三分钟上手DiffSinger》系列 ——基础篇https://www.bilibili.com/video/BV1ug4y1S7Dk/?spm_id_from333.337.search-card.all.click&vd_source124076d7d88eee393a1d8bf6fc787efa 下载DiffSinger 建议用edge浏览器还有steam&#xff0c;有时只是慢&#xff0c;但是还是…...

What is `StringEscapeUtils.escapeHtml4` does?

StringEscapeUtils.escapeHtml4 作用是将特殊字符转换为它们对应的HTML实体形式&#xff0c;从而防止这些字符在网页中被解析为HTML标签或脚本&#xff0c;有助于防止跨站脚本攻击&#xff08;XSS, Cross-Site Scripting&#xff09; 依赖 <!--org.apache.commons.text.St…...

Dubbo 的心脏:理解和应用多种协议【十三】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Dubbo 的心脏&#xff1a;理解和应用多种协议【十三】 前言<dubbo:protocol> 基础<dubbo:protocol> 的定义和作用微服务中协议的重要性支持的协议类型配置示例 配置基本配置参数高级配置选…...

操作系统实验报告

目录 目录 实验一 一、实验结果 实验二 使用信号量实现进程互斥与同步 一、实验结果 1. 使用信号量实现有限缓冲区的生产者和消费者问题 2. 使用信号量实现读进程具有优先权的读者和写者问题 实验三 死锁和预防 一、实验要求 二、实验内容 三、实验结果 实验四 内…...

IPv6--ACL6(IPv6访问控制列表--基本ACL6配置)

ACL基本原理 ACL由一系列规则组成,通过将报文与ACL规则进行匹配,设备可以过滤出特定的报文。 ACL的组成 ACL编号: 在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同,这个后面具体讲。 规则: 前面提到了,一个AC…...

C和指针课后答案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 第八章课后答案 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参…...

C语言——大头记单词

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 每一发奋努力的背后&#xff0c;必有加…...

根据自己修改后的容器制作镜像并上传docker hub

要将自己的镜像上传到Docker Hub&#xff0c;可以按照以下步骤进行操作&#xff1a; 首先&#xff0c;确保已经在本地构建好了需要上传的 Docker 镜像。如果还没有构建&#xff0c;可以使用 docker build 命令来创建镜像。 登录到 Docker Hub 账号。打开终端或命令提示符&…...

避坑指南:ESP32 ADC测量不准?7个常见错误与校准优化方案

ESP32 ADC精度优化实战&#xff1a;从硬件设计到软件校准的完整避坑手册 当你在ESP32项目中使用ADC读取传感器数据时&#xff0c;是否遇到过这些情况&#xff1a;明明输入电压稳定&#xff0c;读数却像心电图一样上下跳动&#xff1f;同一个电路在不同开发板上测出的数值相差甚…...

Granite TimeSeries FlowState R1 模型效果深度评测:与传统统计方法的对比

Granite TimeSeries FlowState R1 模型效果深度评测&#xff1a;与传统统计方法的对比 时间序列预测这事儿&#xff0c;听起来挺专业&#xff0c;其实离我们生活很近。比如&#xff0c;电商平台要预测下个月的销售额&#xff0c;电力公司要预估明天的用电负荷&#xff0c;甚至…...

三步解锁Bruno API测试工具的隐藏潜力

三步解锁Bruno API测试工具的隐藏潜力 【免费下载链接】bruno 开源的API探索与测试集成开发环境&#xff08;作为Postman/Insomnia的轻量级替代方案&#xff09; 项目地址: https://gitcode.com/GitHub_Trending/br/bruno Bruno作为Postman的开源替代品&#xff0c;以其…...

3DS原生GBA游戏体验:open_agb_firm完整使用指南

3DS原生GBA游戏体验&#xff1a;open_agb_firm完整使用指南 【免费下载链接】open_agb_firm open_agb_firm is a bare metal app for running GBA homebrew/games using the 3DS builtin GBA hardware. 项目地址: https://gitcode.com/gh_mirrors/op/open_agb_firm 想要…...

Reachability.swift终极指南:现代iOS应用网络状态管理完全解析

Reachability.swift终极指南&#xff1a;现代iOS应用网络状态管理完全解析 【免费下载链接】Reachability.swift Replacement for Apples Reachability re-written in Swift with closures 项目地址: https://gitcode.com/gh_mirrors/re/Reachability.swift Reachabilit…...

Waymo Sim Agents模拟代理:多智能体交互建模实战指南

Waymo Sim Agents模拟代理&#xff1a;多智能体交互建模实战指南 【免费下载链接】waymo-open-dataset Waymo Open Dataset 项目地址: https://gitcode.com/gh_mirrors/wa/waymo-open-dataset Waymo Sim Agents模拟代理是Waymo开放数据集中的重要组成部分&#xff0c;专…...

Yuzu模拟器版本高效管理实战指南:从新手到专家的避坑技巧

Yuzu模拟器版本高效管理实战指南&#xff1a;从新手到专家的避坑技巧 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads 你是否曾遇到这样的困境&#xff1a;刚更新的Yuzu模拟器让原本流畅的游戏变得卡顿&#xff0c;…...

终极存储设备容量检测指南:如何用F3工具3分钟识别假冒U盘和SD卡

终极存储设备容量检测指南&#xff1a;如何用F3工具3分钟识别假冒U盘和SD卡 【免费下载链接】f3 F3 - Fight Flash Fraud 项目地址: https://gitcode.com/gh_mirrors/f3/f3 在数字存储时代&#xff0c;容量造假已成为困扰用户的普遍问题。F3&#xff08;Fight Flash Fra…...

如何构建现代化微前端架构:Umi-plugin-qiankun实战指南

如何构建现代化微前端架构&#xff1a;Umi-plugin-qiankun实战指南 【免费下载链接】umi-plugin-qiankun Umi plugin for qiankun. 项目地址: https://gitcode.com/gh_mirrors/um/umi-plugin-qiankun 在现代企业级前端开发中&#xff0c;Umi-plugin-qiankun微前端解决方…...

MOOTDX零代码金融数据解决方案:3个核心价值点解锁股票数据可视化分析

MOOTDX零代码金融数据解决方案&#xff1a;3个核心价值点解锁股票数据可视化分析 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 一、价值定位&#xff1a;为什么MOOTDX是金融数据获取的最优解 打…...