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

为网站做推广室内装潢设计专业培训

为网站做推广,室内装潢设计专业培训,我国中小企业500强,html转pdf在线如何理解React通过对DOM的模拟#xff0c;最大限度地减少与DOM的交互 背景分析关于虚拟DOM 背景 在学习React的过程中#xff0c;发现很多文档上关于React的高效都有这么一句话的描述——React通过对DOM的模拟#xff0c;最大限度地减少与DOM的交互#xff0c;对于我这种前… 如何理解React通过对DOM的模拟最大限度地减少与DOM的交互 背景分析关于虚拟DOM 背景 在学习React的过程中发现很多文档上关于React的高效都有这么一句话的描述——React通过对DOM的模拟最大限度地减少与DOM的交互对于我这种前端小白来说理解起来还是挺费劲的所以找了些文档学习了一番。 分析 在查找资料的过程中笔者发现关于这句话的描述其实包含着下面的知识点 虚拟DOM React引入了虚拟DOM的概念。虚拟DOM是一个存在于内存中的树形结构它对应着实际的DOM树。在React中组件的状态变化会首先在虚拟DOM上进行操作而不是直接操作实际的DOM。 关于虚拟DOM 这里我们先以一个计数器为例子分别看看React和JavaScript对它的实现方式React实现方式 封装Counter.js import React from react;// 计数器组件 const Counter ({ count, onIncrement }) (divpCount: {count}/pbutton onClick{onIncrement}Increment/button/div );export default Counter;在App.js中引入组件 function App() { /**计数器组件 */const [count, setCount] useState(0);// 处理递增事件const handleIncrement () {setCount(count 1);};return (divh1Counter App/h1Counter count{count} onIncrement{handleIncrement} //div); }export default App; JavaScript实现方式 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleCounter App/title/headbodydiv idcounterContainerp idcountDisplayCount: 0/pbutton idincrementButtonIncrement/button/divscript// 获取DOM元素var countDisplay document.getElementById(countDisplay);var incrementButton document.getElementById(incrementButton);// 初始化计数器var count 0;// 处理按钮点击事件function handleIncrement() {count;countDisplay.textContent Count: count;}// 添加按钮点击事件监听器incrementButton.addEventListener(click, handleIncrement);/script/body /html对比上面两种实现方式JavaScript 直接对实际DOM进行操作需要我们手动管理状态和UI之间的同步每次计数1时同步修改UI展示。随着项目越来越大当我们直接修改的DOM改动的频次越多甚至涉及位置变换那么就可能带来重排和重绘的问题了**。** 重排 当改变影响到页面布局的属性时例如修改了元素的尺寸、位置、添加或删除了DOM元素等浏览器可能会触发重排。重排是一项比较昂贵的操作因为它涉及到重新计算元素的几何属性和页面的布局可能导致整个页面的重新渲染。重绘 当改变影响到元素的样式但不涉及布局的改变时例如修改了颜色、背景等浏览器可能会触发重绘。重绘相对于重排来说开销较小因为它只涉及到重新绘制元素的外观。 再来看看React的实现方式首先我们可以知道所有的HTML的DOM节点都可以用JS方式去表示而React在这里巧妙的利用JS 表示 DOM对象的方式避免了对DOM的直接操作类似于中间加了一层缓存操作。这里又想到一句话计算机领域大部分问题都可以通过中间加一层解决。如图所示通过react-developer-tools工具我们可以更加直观看到React如何表示我们的HTML的DOM结构。 React这种在内存中采用JS 表示 DOM对象的方式又有一个更加专业点的名称虚拟DOM。它通过采用虚拟DOM和差异算法来最小化对实际DOM的直接操作。 以上面计时器为例React在渲染过程中会首先根据render的结果将这个树状结构在JS里创建出来这个树状结构就是虚拟DOM层当我们的计数器发生变化时React会将这个新的虚拟DOM和正在呈现的虚拟DOM进行对比并找出其中的差异然后用最少的DOM操作完成这个更新。 再回到我们的标题**如何理解React通过对DOM的模拟最大限度地减少与DOM的交互**这里我们可以做一下小结了React通过引入虚拟DOM当DOM发生修改时在内存中进行差异对比最大限度地的用最少的DOM操作完成这些操作。 随着深入了解除去DOM关于这句话的理解其实也还包含了如下几个知识点这里先列举出来 批处理 React会将一系列对虚拟DOM的操作合并成一个批处理。这样可以减少实际DOM操作的次数从而提高性能。React通过一些策略例如合并相邻的setState调用来优化实际DOM的更新。差异算法Reconciliation 在组件状态发生变化时React会通过比较新旧虚拟DOM树的差异找出最小的更新操作。然后只对实际需要更新的部分进行DOM操作。这就是所谓的“协调”Reconciliation过程。DOM更新的延迟执行 React会尽量将DOM更新的执行时机延迟到最合适的时候。例如在浏览器的空闲时期或者通过使用 requestAnimationFrame 等API来调度更新以确保更新不会影响用户的交互体验。
http://www.zqtcl.cn/news/91436/

相关文章:

  • 建设一个网站花多少钱江苏省水利工程建设局网站
  • 美橙建站之星怎么样嘉兴网站系统总部
  • 织梦企业门户网站网站只收录无权重
  • 枣庄市 网站建设南宁制作网站
  • 动漫网站建设的目的it外包公司怎么找
  • 怎样打开网站制作千图app的优势
  • 网站建设销售经理职责大桥石化集团网站谁做的
  • 黄金网站软件免费靖江seo快速排名
  • 网站建设经验做法和取得的成效wordpress 浏览器兼容
  • 代理记账注册公司图片商丘网站seo
  • 北京网站建设推荐安徽秒搜科技河南建设工程信息网招标公告
  • 网站开发项目实训总结微网站设计
  • 山东济南建网站公司东莞排名seo网站关键词优化
  • 找网站建设企业培训机构哪家最好
  • 建什么类型个人网站比较好开发高端网站建设价格
  • 网站开发 卡片网站建设合同需要印花税
  • 手机端网站图片上传如何做新公司取名字大全免费
  • vue.js网站建设智慧团建官方网站登录入口
  • 江宁区建设局网站网站建设 美食站点
  • 哈尔滨松北区建设局网站唐山企业网站模板建站
  • 服装公司网站策划书外网设计灵感网站
  • 学做婴儿衣服网站windows 建网站
  • 银饰品网站建设规划策划书wordpress近义词搜索
  • 淘宝联盟网站推广位怎么做网站开发合同支付
  • 有没有一些有试卷做的网站ios开发教程
  • 网站备案服务类型红酒公司网站源码
  • 南宁网站优化推广方案4000套微信小游戏源码
  • 什么犁网站做淘宝门头阿里云 wordpress建站
  • 免费网站建设凡科设计师的网站有哪些
  • 微信公众号运营方法seo 排名 优化