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

NextTick 在 Vue 中如何发挥作用的?其实大部分人一知半解

来源: 责编: 时间:2024-02-05 09:31:40 324观看
导读大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~背景我发现很多人背八股文真的背傻了,只知道 nextTick = 微任务,其他啥都不知道,也不去了解原因,甚至大部分理解的都是错的?先来

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~tVY28资讯网——每日最新资讯28at.com

背景

我发现很多人背八股文真的背傻了,只知道 nextTick = 微任务,其他啥都不知道,也不去了解原因,甚至大部分理解的都是错的?tVY28资讯网——每日最新资讯28at.com

先来回顾下nextTick的使用,因为 Vue 的响应式变量是异步更新DOM的,所以当你变量修改的时候,并不能第一时间拿到最新的 DOM,而在nextTick中就可以拿到最新的 DOMtVY28资讯网——每日最新资讯28at.com

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

先问是不是,再问为什么

很多人认为 nextTick = 微任务,这其实是错的,正确应该是 nextTick 优先是 微任务,不信可以直接看 Vue 的源码tVY28资讯网——每日最新资讯28at.com

在src/core/util/next-tick.ts 文件中,可以看到 nextTick 优先级如下:tVY28资讯网——每日最新资讯28at.com

  • Promise.resolve().then:微任务
  • MutationObserver:宏任务
  • setImmediate:宏任务
  • setTimeout:宏任务

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

所以说 nextTick 只是优先选择微任务而已,当浏览器不支持微任务的时候,它还是会选择宏任务tVY28资讯网——每日最新资讯28at.com

为啥优先微任务?

2023年面试了怎么也得有100个人了,大部分都不能比较好的回答这个问题:nextTick为啥优先选择微任务?tVY28资讯网——每日最新资讯28at.com

首先声明一个点:Vue 的异步更新DOM 其实也是微任务,比如下面的例子,你一次性更新了三次变量,其实会生成三个更新DOM微任务到队列中tVY28资讯网——每日最新资讯28at.com

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

你这个时候放一个 nextTick 在后面,那就是在三个微任务后面再放一个微任务而已tVY28资讯网——每日最新资讯28at.com

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

我们都知道微任务是在UI渲染之前执行的,那为什么 nextTick 能拿到最新的 DOM 呢?tVY28资讯网——每日最新资讯28at.com

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

更新 ≠ 渲染

其实我们要明白一个点:更新 ≠ 渲染,前面三个更新微任务只是更新DOM,修改的是DOM树,而使用 document.getElementById这类方法去获取到的就是DOM树的内容tVY28资讯网——每日最新资讯28at.com

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

所以 nextTick 为什么是微任务,但是能获取到最新DOM呢?因为到了 nextTick 这一步的时候,DOM树已经更新完了,只是还没渲染到页面上而已,而我们能通过DOM的一些API去获取到最新的DOM树内容,比如 document.getElementById 这类方法tVY28资讯网——每日最新资讯28at.com

所以,与其说 nextTick 能获取到最新的DOM,还不如说 nextTick 能获取到最新的DOM树信息tVY28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-73790-0.htmlNextTick 在 Vue 中如何发挥作用的?其实大部分人一知半解

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

上一篇: 图文讲透Golang标准库 net/http实现原理 - 客户端

下一篇: 轻松实现 SpringBoot 中的隐私数据脱敏处理

标签:
  • 热门焦点
  • 三言两语说透设计模式的艺术-简单工厂模式

    一、写在前面工厂模式是最常见的一种创建型设计模式,通常说的工厂模式指的是工厂方法模式,是使用频率最高的工厂模式。简单工厂模式又称为静态工厂方法模式,不属于GoF 23种设计
  • 28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈

    前言在使用SpringBoot开发中或者在求职面试中都会使用到很多注解或者问到注解相关的知识。本文主要对一些常用的注解进行了总结,同时也会举出具体例子,供大家学习和参考。注解
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 疑似小米14外观设计图曝光:后置相机模组变化不大

    下半年的大幕已经开启,而谁将成为下半年手机圈的主角就成为了大家关注的焦点,其中被传有望拿下新一代骁龙8 Gen3旗舰芯片的小米14系列更是备受大家瞩
  • 华为和江淮汽车合作开发百万元问界MPV?双方回应来了

    8月1日消息,郭明錤今天在社交平台发文称,华为正在和江淮汽车合作,开发售价在100万元的问界MPV,预计在2024年第2季度量产,销量目标为上市首年交付5万辆。
  • iQOO 11S或7月上市:搭载“鸡血版”骁龙8Gen2 史上最强5G Soc

    去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,iQOO 11不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞屏,同时在快充
Top