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

北师大网页制作与网站建设期末考试seo1搬到哪里去了

北师大网页制作与网站建设期末考试,seo1搬到哪里去了,长安镇做网站,如何让网站排名下降setState 和 forceUpdate 1 #xff09; 概述 通过 class component 内部的 setState#xff0c;以及 forceUpdate 去更新一个组件的过程在react的应用当中#xff0c;我们只有 ReactDOM.render setState#xff0c;以及 forceUpdate这几种种方式去更新react的应用是合理…setState 和 forceUpdate 1 概述 通过 class component 内部的 setState以及 forceUpdate 去更新一个组件的过程在react的应用当中我们只有 ReactDOM.render setState以及 forceUpdate这几种种方式去更新react的应用是合理的其他没有什么特别常用的方式去更新了而且react官方推荐的也是用这些。forceUpdate 其实本身也不是特别推荐的因为有比较特殊的作用以及比较特殊的使用场合, 也算是一个比较有用的API在React16.7之后发布的Hooks, Hooks里面我们通过useState 返回过来的一个方法也可以去更新一个组件的状态 这块看不到源码只能看到打包之后的代码它的设置比较特殊这块先跳过 setState以及 forceUpdate的核心首先是他们是给节点 Fiber 去创建更新的对于 ReactDOM.render 来说它创建的 update 是放在root上面它是一个整体的渲染因为执行 ReactDOM.render 的时候整个应用都没有任何的产生任何的节点都没有生成是一个初始的渲染所以 setState 和 forceUpdate 是针对某一个 class component 来说的 这个 class component 的状态来进行更新把新的状态计算并渲染出来 setState 和 forceUpdate 两者更新的类型不同 它们上面有 UpdateState, ForceUpdate 两种不同的 tag这个tag就对应的它们是更新的类型不同 2 源码 先跳过 组件如何去渲染 也就是我们的 class component什么时候会被实例化这个涉及到后面的更新的流程 我们的component的BaseClass在初始化的时候会拿到一个update的这个对象 这个对象来自于哪个地方 源码: https://github.com/facebook/react/blob/v16.6.0/packages/react-reconciler/src/ReactFiberClassComponent.js 这个文件中有涉及很多 class 相关的代码 const classComponentUpdater {isMounted,enqueueSetState(inst, payload, callback) {const fiber ReactInstanceMap.get(inst); // inst 是调用 this.setState 时的 this在react渲染的时候会通过 ReactInstanceMap 做映射和获取 Fiber对象const currentTime requestCurrentTime();const expirationTime computeExpirationForFiber(currentTime, fiber);const update createUpdate(expirationTime);update.payload payload; // 这里 payload 是 setState时传入的对象if (callback ! undefined callback ! null) {if (__DEV__) {warnOnInvalidCallback(callback, setState);}update.callback callback; // 挂载 callback}enqueueUpdate(fiber, update); // 把fiber对象的updateQueue进行初始化或更新scheduleWork(fiber, expirationTime); // 进行调度处理},enqueueReplaceState(inst, payload, callback) {const fiber ReactInstanceMap.get(inst);const currentTime requestCurrentTime();const expirationTime computeExpirationForFiber(currentTime, fiber);const update createUpdate(expirationTime);update.tag ReplaceState;update.payload payload;if (callback ! undefined callback ! null) {if (__DEV__) {warnOnInvalidCallback(callback, replaceState);}update.callback callback;}enqueueUpdate(fiber, update);scheduleWork(fiber, expirationTime);},enqueueForceUpdate(inst, callback) {const fiber ReactInstanceMap.get(inst);const currentTime requestCurrentTime();const expirationTime computeExpirationForFiber(currentTime, fiber);const update createUpdate(expirationTime);update.tag ForceUpdate;if (callback ! undefined callback ! null) {if (__DEV__) {warnOnInvalidCallback(callback, forceUpdate);}update.callback callback;}enqueueUpdate(fiber, update);scheduleWork(fiber, expirationTime);}, };这里面主要关注, enqueueSetState 和 enqueueForceUpdate 这两个enqueue 方法几乎一样两者区别 看 update.tag看了上面的源码发现 和 react-reconciler/src/ReactFiberReconciler.js 中的 updateContainer 很像 内部调用 updateContainerAtExpirationTime 接着调用 scheduleRootUpdate 在这里面都基本相似 所以在React中创建更新的过程都是差不多的创建完更新后进入队列就会进行整个应用的更新 React 是一个非常纯粹的框架所有的核心都是服务应用的整体更新的, 就是 scheduleWork 函数进入之后的整体更新流程 这块在React整体的代码量中占据非常大的比例
http://www.zqtcl.cn/news/499193/

相关文章:

  • 公司商城网站建设方案wordpress旗舰
  • 京东云服务器怎么做网站企业宣传网站怎么做
  • 如何自学网站建设云南网爱我国防知识竞赛
  • 什么网站可以做投资设计接单
  • 网站内容批量替换桐乡网站制作
  • 怎么免费做网站教程制作xml网站地图文件
  • 广西智能网站建设哪家好网红商城
  • 关于建设网站的情况说明书wordpress 在线检测
  • 帝国cms 网站迁移错版怎样做心理咨询网站
  • 烟台建网站wordpress重写规则
  • 上海网站建设怎么赚钱平顶山网站建设服务公司
  • 导航网站如何被百度收录广告设计在线设计
  • 雪域什么网站是做电影的苏州优化方式
  • 设计网站多少钱手机百度助手
  • 驾校网上约车网站开发不会做网站如何做seo
  • 企业做推广可以发哪些网站宜兴埠网站建设
  • 网站后台文章添加成功 不显示公司设计网站建设合同
  • 后端开发需要掌握哪些知识潍坊优化公司
  • 专业手机网站制作哪家好wordpress wp-polls
  • 网站建设前分析网页制作素材按钮
  • 做视频网站怎么对接云盘松江新城网站建设
  • 温州阿里巴巴网站建设企业宣传片怎么拍
  • 淮阳住房城乡建设局网站阿里巴巴做国际网站要多少钱
  • 电子商务个人网站可以备案吗短网址还原
  • 网站内容由什么组成部分组成部分电子商务网站建设主管的策划书
  • 云服务器安装win系统做网站seo三人行论坛
  • 电气网站设计机械设计软件solidworks
  • 内网网站建设所需硬件设备厦门关键词排名提升
  • 网站动态海报效果怎么做的最专业网站建
  • 学校如何建设网站北京市住房及城乡建设部网站