通过今天的学习,你将收获这些内容:
创新互联服务项目包括盂县网站建设、盂县网站制作、盂县网页制作以及盂县网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,盂县网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到盂县省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
首先来想一个问题。比如在 vue 中一次更新中。
姓名: {{ name }}
年龄: {{ age }}
如上是一个非常简单的逻辑代码,点击按钮,会触发 name 和 age 的更新。那么首先想一个问题就是:
那么暴露的问题就是,我们在 handleClick 中,同时改变了 name 和 age 属性,那么按照正常情况下,会分别触发 name 和 age 的 set,那么如果不做处理,那么会让渲染 watcher 执行两次,结果就是组件会 update 两次,但是结果是这样的吗?
结果是:vue 底层通过批量处理,只让组件 update 一次。
上面介绍了在 vue 中更新批处理的案例之后,我们来看一下在 react 中的批量更新处理。把上述案例用 react 来实现一下:
function Index(){
const [ age , setAge ] = React.useState(0)
const [ name, setName ] = React.useState('')
return
姓名: {name}
年龄: {age}
}
点击按钮,触发更新,会触发两次 useState 的更新函数。那么 React 的更新流程大致是这样的。
那么按常理来说,Index 组件会执行两次。可事实是只执行一次 render。
通过上面的案例说明在主流框架中,对于更新都采用批处理。一次上下文中的 update 会被合并成一次更新。那么为什么要进行更新批处理呢?
批处理主要是出于对性能方面的考虑,这里拿 react 为例子,看一下批处理前后的对比情况:
/ ------ js 层面 ------
/ ------ 浏览器渲染 ------
我们可以看到如果没有批量更新处理,那么会多走很多步骤,包括 render 阶段 ,commit 阶段,dom 的更新等,这些都会造成性能的浪费,接下来看一下有批量更新的情况。
/ ------ js 层面 ------
/ ------ 浏览器渲染 ------
从上面可以直观看到更新批处理的作用了,本质上在 js 的执行上下文上优化了很多步骤,减少性能开销。
在正式讲批量更新之前,先来温习一下宏任务和微任务,这应该算是前端工程师必须掌握的知识点。
所谓宏任务,我们可以理解成,
打印结果:
分析一下核心流程:
React进阶实践指南
文章名称:聊聊主流前端框架更新批处理方式
文章来源:http://www.gawzjz.com/qtweb2/news8/7408.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联