当前位置:首页 > 科技  > 软件

频繁切换v-show,不频繁使用v-if?面试的时候可别再这么说了!

来源: 责编: 时间:2024-04-22 09:15:38 255观看
导读Hello,大家好,我是 Sunday。很多同学应该都在面试中遇到过这样的问题:“v-if 和 v-show 有什么区别?我们应该在什么情况下使用 v-if,什么情况下使用 v-show 呢?”很多同学一听,这不太简单了,基础八股文啊(官网中也有明确的文档

Hello,大家好,我是 Sunday。dlC28资讯网——每日最新资讯28at.com

很多同学应该都在面试中遇到过这样的问题:“v-if 和 v-show 有什么区别?我们应该在什么情况下使用 v-if,什么情况下使用 v-show 呢?”dlC28资讯网——每日最新资讯28at.com

很多同学一听,这不太简单了,基础八股文啊(官网中也有明确的文档说明),瞧不起谁呢?直接来一通标准回答:“v-if 控制 dom 的渲染,v-show 通过 css 控制 dom 的显示。如果切换频繁,那么就使用 v-show,否则就使用 v-if”。dlC28资讯网——每日最新资讯28at.com

但是真实情况真的是这样吗?面试官接下来的一个问题,可能就会直接让你无法回答:“那么,什么情况下叫做切换频繁,什么情况下叫做切换不频繁呢?”dlC28资讯网——每日最新资讯28at.com

是啊,什么是频繁,什么是不频繁呢?dlC28资讯网——每日最新资讯28at.com

我们无法判断 dom 是否频繁切换

假如:有一个用户表单,表单上存在一个“角色”按钮:dlC28资讯网——每日最新资讯28at.com

图片图片dlC28资讯网——每日最新资讯28at.com

点击角色按钮,弹出一个 dialog 弹出层:dlC28资讯网——每日最新资讯28at.com

图片图片dlC28资讯网——每日最新资讯28at.com

那么此时,角色 dialog 的切换是否频繁呢? 我相信很多同学都没有办法给出一个确切的答案吧。dlC28资讯网——每日最新资讯28at.com

所以说:dlC28资讯网——每日最新资讯28at.com

在实际开发中:开发者是无法判断 dom 是否频繁切换的。dlC28资讯网——每日最新资讯28at.com

v-if 和 v-show 的真实使用场景

我们可以回忆下日常工作中的真实场景,决定使用 v-if 和 v-show 的依据是什么呢?dlC28资讯网——每日最新资讯28at.com

其核心应该是:v-if 会导致 组件(dom)的重新渲染,但是 v-show 不会。dlC28资讯网——每日最新资讯28at.com

重新渲染就意味着:整个生命周期会重新执行。 当 v-if 为 false 时,整个组件是不存在的,而变为 true 之后,组件会重新执行所有的生命周期回调。假如我们在 created 这种生命周期钩子中执行了 接口请求 的方法,这就意味着 此时接口的请求才会触发 。如果接口触发会 依赖其他参数(如:props) 那么此时的请求时机会刚刚好。dlC28资讯网——每日最新资讯28at.com

而对于 v-show 而言,整个生命周期只会触发一次。 当 v-show 为 false 时,组件虽然看不到,但是 已经存在了。这也就意味着,假如我们在 created 这种生命周期钩子中执行了 接口请求 的方法, 此时接口已经请求了,如果接口请求中涉及到 点击之后才可以获取的参数(props),那么此时因为没有点击,所以你可能会得到一个错误。dlC28资讯网——每日最新资讯28at.com

该问题如何回答

所以,基于以上原因,这个问题大家可以这么说(以下回答仅供参考):dlC28资讯网——每日最新资讯28at.com

Vue 官方中对 v-if 和 v-show 的使用场景区分是:当需要频繁显示和隐藏的时候,那么需要使用 v-show 否则需要使用 v-if。dlC28资讯网——每日最新资讯28at.com

但是在实际的开发中我们是 无法分辨一个场景(Dialog)是否是频繁切换的。dlC28资讯网——每日最新资讯28at.com

所以说,在实际开发中,判断 v-if 和 v-show 的使用需要根据它们的特性来进行判断。dlC28资讯网——每日最新资讯28at.com

v-show 不会导致组件被销毁和渲染,但是 v-if 会导致组件被销毁和重新渲染。dlC28资讯网——每日最新资讯28at.com

也就是说:当使用 v-show 时,虽然用户看不到组件,但是当前组件的生命周期都已经执行了。如果在 created 中存在接口的调用,则【接口已经调用完成】。同时,当组件隐藏时,组件并不会销毁。相反:如果是 v-if 的每次点击时都会重新渲染组件,重新执行生命周期,隐藏则销毁组件。dlC28资讯网——每日最新资讯28at.com

所以说,判断 v-if 和 v-show 的使用条件应该是:当组件需要在指定时机创建,在指定时机销毁时,需要使用 v-if。而 当组件仅需要创建一次时,则可以使用 v-show。dlC28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-84467-0.html频繁切换v-show,不频繁使用v-if?面试的时候可别再这么说了!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 探秘C++虚函数:解密多态的奥秘

下一篇: 在前端中,什么是幽灵依赖?

标签:
  • 热门焦点
  • K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    Redmi的后性能时代战略发布会今天下午如期举办,在本次发布会上,Redmi公布了多项关于和联发科的深度合作,以及新机K60 Ultra在软件和硬件方面的特性,例如:“K60 至尊版,双芯旗舰
  • Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    在上个月举办的Redmi Note11T Pro系列新机发布会上,除了两款手机新品之外,Redmi还带来了两款TWS真无线蓝牙耳机产品,Redmi Buds 4和Redmi Buds 4 Pro,此前我们在Redmi Note11T
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
Top