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

这篇具有很好参考价值的文章主要介绍了VUE 中的 v-for 和 v-if 是否可以共存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

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

VUE 中的 v-for 和 v-if 是否可以共存,前端面试题,javascript,面试,vue

1、面试经


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

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

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

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

分析Vue2:

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

VUE 中的 v-for 和 v-if 是否可以共存,前端面试题,javascript,面试,vue

	可以看到在 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 却是可以共存的,为什么呢?我们还是拿最简单的代码来分析

VUE 中的 v-for 和 v-if 是否可以共存,前端面试题,javascript,面试,vue

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

VUE 中的 v-for 和 v-if 是否可以共存,前端面试题,javascript,面试,vue
VUE 中的 v-for 和 v-if 是否可以共存,前端面试题,javascript,面试,vue

可以看到,跟 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 会在底层帮我们转换成

VUE 中的 v-for 和 v-if 是否可以共存,前端面试题,javascript,面试,vue

2、正确回答

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

3、总结


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

VUE 中的 v-for 和 v-if 是否可以共存,前端面试题,javascript,面试,vue


总结:

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

— 关注我:前端路上不迷路 —文章来源地址https://www.toymoban.com/news/detail-802058.html




到了这里,关于VUE 中的 v-for 和 v-if 是否可以共存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTML简单实现v-if与v-for与v-model

    首先VIewModel将View和Model连接一起,Model的数据改变View的数据也变 使用Visual Studio Code 启动Vue需要vue.js插件和导入CDN(包) vue.js插件:CTRL + shift + x 在搜索栏搜 索vue.js安装即可 CDN: https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js VS创建一个.html的文件 div /div块为view层(模板) script /s

    2024年02月06日
    浏览(44)
  • 2、简单上手+el挂载点+v-xx(v-text、v-html、v-on、v-show、v-if、v-bind、v-for)

    vue3:https://cn.vuejs.org/ vue2:https://v2.cn.vuejs.org/v2/guide/ 流程: 导入开发版本的Vue.js 创建Vue实例对象,设置el属性和data属性。 使用简洁的模板语法把数据渲染到页面上 示例: Vue实例的作用范围是什么呢? Vue会管理el选项命中的元素及其内部的后代元素。 是否可以设置其他的

    2024年02月13日
    浏览(42)
  • Vue.js 中的 v-if 和 v-show 有什么区别?

    在 Vue.js 中,v-if 和 v-show 都是用来控制元素的显示和隐藏的指令。但是,它们之间有一些区别。本文将深入探讨 v-if 和 v-show 的区别,并给出一些相关的代码示例。 v-if 是一种条件渲染指令,它根据表达式的值来决定是否渲染元素。如果表达式的值为 true,那么元素将被渲染;

    2024年02月08日
    浏览(45)
  • vue中的v-for循环

    如果是一个变量,那么保存的是对象中的属性值 如果是两个变量,那么第一个变量保存的是属性值,第二个变量保存的是属性名 如果是三个变量,那么第一个变量保存的是属性值,第二个变量保存的是属性名,第三个变量保存的是下标 v-for=\\\"o1 in obj\\\"          o1:属性值 v-f

    2024年01月17日
    浏览(39)
  • GuLi商城-前端基础Vue指令v-for

    2024年02月12日
    浏览(35)
  • vue3【列表渲染】v-for 详细介绍(vue中的“循环”)

    在本文之前已经有文章简单概要介绍过vue中的渲染,点击帮你快速复习👏👏,包括 条件渲染 和 列表渲染 。 二者同样重要,但是 对于项目而言,使用更多的是列表渲染,主要表现为“循环”。 下面让我们继续深入地了解列表渲染的相关内容吧~👏👏👏 我们可以使用 v-f

    2024年02月22日
    浏览(42)
  • vue学习之v-if/v-else/v-else-if

    v-else/v-else-if 创建 demo7.html,内容如下 效果展示

    2024年02月08日
    浏览(36)
  • VUE v-if 和 v-show 区别和例子

    在Vue中,v-if和v-show是两种常用的指令,用于控制组件的显示和隐藏。下面是一些使用v-if和v-show的例子: v-if 在编译过程中会被转化成三元表达式,条件不满⾜时不渲染此节点。 v-show 会被编译成指令,条件不满⾜时控制样式将对应节点隐藏(display:none) v-if html template     di

    2024年01月22日
    浏览(38)
  • Vue 中 v-if 和 v-show 的区别

    v-if  和  v-show  是 Vue.js 中常用的条件渲染指令,它们的作用是根据条件来控制元素的显示与隐藏。 格式也差不多: 当 isShow 为 true 时显示当前元素,为 false 时隐藏 虽然它们的效果类似,但是它们在实现原理和使用场景上有一些区别。 1. 实现原理: v-if :根据条件动态添加

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包