React re-render

What is?

react的渲染分为两个阶段:

  • render,组件第一次出现在屏幕上的时候触发
  • re-render, 组件第一次渲染之后的渲染

当app的数据更新时(用户手动更新、或异步请求)。

When?

re-render发生有四种可能:

  1. state改变: 所有re-render的根源
  2. 父组件渲染
  3. 上下文改变: 全局变量的改变会引起所有使用此变量的组件

Reconciliation

Reconciliation被称为diff算法,用来比较两个React元素树的差异,提高渲染的效率,尽可能复用现有的组件和DOM。

通过比较元素的type和key相同就复用,否则就销毁和新建。

Props

改变props需要父组件更新,子组件无法改变props

optimise

  • 在组件中创建组件,将会极大的拖慢渲染速度。可能会引起闪烁、非期望的状态重置、useeffect不触发依赖、失去焦点等问题。
  • 把state尽可能的移动到子组件中
  • 将A组件作为props传给B组件,B组件的渲染不会带来A的渲染
  • 使用React.memo,防止渲染
相关推荐
努力往上爬de蜗牛1 天前
文件下载 针对安卓系统
前端·javascript·vue.js
一粒马豆1 天前
excel表格通过前端fetch上传至后端flask处理流程示例
前端·python·flask·excel·h5·js·fetch
江城开朗的豌豆1 天前
前端异步难题?用Redux-Thunk轻松搞定!
前端·javascript·react.js
正义的大古1 天前
OpenLayers地图交互 -- 章节十二:键盘平移交互详解
javascript·vue.js·openlayers
CodeSheep1 天前
稚晖君公司最新合伙人,公开了!
前端·后端·程序员
IT_陈寒1 天前
3年Java老手:我用这5个Spring Boot优化技巧将系统吞吐量提升了200%!🚀
前端·人工智能·后端
正义的大古1 天前
OpenLayers地图交互 -- 章节十一:拖拽文件交互详解
javascript·vue.js·microsoft·openlayers
清木Moyu1 天前
layui tree组件回显bug问题,父级元素选中导致子集全部选中
前端·bug·layui
奶糖 肥晨1 天前
前端Bug实录:为什么表格筛选条件在刷新时神秘消失?
前端·bug
樱花落海洋1111 天前
layui 表格行级 upload 上传操作
前端·javascript·layui