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

商务网站建设实验报告网站建设域名和空间

商务网站建设实验报告,网站建设域名和空间,做网站怎么引流,wordpress js代码编辑器插件下载地址面试官#xff1a;说说你是如何提高组件的渲染效率的#xff1f;在React中如何避免不必要的render#xff1f; 一、是什么 react 基于虚拟 DOM 和高效 Diff 算法的完美配合#xff0c;实现了对 DOM 最小粒度的更新#xff0c;大多数情况下#xff0c;React 对 DOM 的渲染…面试官说说你是如何提高组件的渲染效率的在React中如何避免不必要的render 一、是什么 react 基于虚拟 DOM 和高效 Diff 算法的完美配合实现了对 DOM 最小粒度的更新大多数情况下React 对 DOM 的渲染效率足以我们的业务日常 复杂业务场景下性能问题依然会困扰我们。此时需要采取一些措施来提升运行性能避免不必要的渲染则是业务中常见的优化手段之一 二、如何做 在之前文章中我们了解到render的触发时机简单来讲就是类组件通过调用setState方法 就会导致render父组件一旦发生render渲染子组件一定也会执行render渲染 从上面可以看到父组件渲染导致子组件渲染子组件并没有发生任何改变这时候就可以从避免无谓的渲染具体实现的方式有如下 shouldComponentUpdatePureComponentReact.memo shouldComponentUpdate 通过shouldComponentUpdate生命周期函数来比对 state 和 props确定是否要重新渲染 默认情况下返回true表示重新渲染如果不希望组件重新渲染返回 false 即可 PureComponent 跟shouldComponentUpdate 原理基本一致通过对 props 和 state的浅比较结果来实现 shouldComponentUpdate源码大致如下 if (this._compositeType CompositeTypes.PureClass) {shouldUpdate !shallowEqual(prevProps, nextProps) || ! shallowEqual(inst.state, nextState); }shallowEqual对应方法大致如下 const hasOwnProperty Object.prototype.hasOwnProperty;/*** is 方法来判断两个值是否是相等的值为何这么写可以移步 MDN 的文档* https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/is*/ function is(x: mixed, y: mixed): boolean {if (x y) {return x ! 0 || y ! 0 || 1 / x 1 / y;} else {return x ! x y ! y;} }function shallowEqual(objA: mixed, objB: mixed): boolean {// 首先对基本类型进行比较if (is(objA, objB)) {return true;}if (typeof objA ! object || objA null ||typeof objB ! object || objB null) {return false;}const keysA Object.keys(objA);const keysB Object.keys(objB);// 长度不相等直接返回falseif (keysA.length ! keysB.length) {return false;}// key相等的情况下再去循环比较for (let i 0; i keysA.length; i) {if (!hasOwnProperty.call(objB, keysA[i]) ||!is(objA[keysA[i]], objB[keysA[i]])) {return false;}}return true; }当对象包含复杂的数据结构时对象深层的数据已改变却没有触发 render 注意在react中是不建议使用深层次结构的数据 React.memo React.memo用来缓存组件的渲染避免不必要的更新其实也是一个高阶组件与 PureComponent 十分类似。但不同的是 React.memo 只能用于函数组件 import { memo } from react;function Button(props) {// Component code }export default memo(Button);如果需要深层次比较这时候可以给memo第二个参数传递比较函数 function arePropsEqual(prevProps, nextProps) {// your codereturn prevProps nextProps; }export default memo(Button, arePropsEqual);三、总结 在实际开发过程中前端性能问题是一个必须考虑的问题随着业务的复杂遇到性能问题的概率也在增高 除此之外建议将页面进行更小的颗粒化如果一个过大当状态发生修改的时候就会导致整个大组件的渲染而对组件进行拆分后粒度变小了也能够减少子组件不必要的渲染 参考文献 https://juejin.cn/post/6844903781679759367#heading-12https://whyta.cn/post/caa00364c45d/
http://www.pierceye.com/news/37829/

相关文章:

  • 怎么样做国外推广网站湖南建筑信息网平台
  • 最新网站排名优化方法wordpress floating menu
  • 滕州市 网站建设公司网站开发工程师招聘
  • 昆山建设招标信息网站win7 iis默认网站设置
  • 有什么网站可以做六级题目嘛建设一个网站需要哪些员工
  • 私自建立网站网站判决书报考二级建造师证需要什么条件
  • 网站设计公司 龙岗2345系统导航
  • 徐州做网站最好的公司工程项目建设自学网站
  • 网站改版 百度影响it运维
  • 网站建设403网站怎么建设?
  • 在线做带字头像的网站网站备案是怎么回事
  • 如何推广手机网站公司网站cms
  • 内容类网站如何 流量厦门公司做网站
  • 百度帐号登录班级优化大师是干什么用的
  • 怎样接做网站的活wap手机网站分享代码
  • 集团网站 wordpress邯郸思勤网络科技有限公司
  • 国内做服装的网站有哪些网站模板备份
  • 自己电脑做服务器上传网站 需要备案吗Wordpress首页制作代码
  • 易县有没有z做网站的宜宾建设局网站
  • 南宁企业免费建站网站开发合同履约
  • 行业导航类网站模板263企业邮箱个人入口登录
  • 优化网站工具哪种网站名称容易通过备案审核
  • 沧州企业网站优化建设网站用新域名还是老域名
  • 带空间二字的韩国视频网站网站要学什么
  • 水果网站建设的策划书淘宝店群软件定制开发
  • 网站规划的主要内容斐讯k3做网站
  • 12306网站开始是谁开发的品牌设计有哪些
  • 电子商务网站网络拓扑好的龙岗网站建设
  • 招商网站建设方案海安公司网站建设
  • 公司网站设计 上海手机网站建设林肖