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,防止渲染
相关推荐
枫,为落叶6 分钟前
Axios使用教程(一)
前端
小章鱼学前端11 分钟前
2025 年最新 Fabric.js 实战:一个完整可上线的图片选区标注组件(含全部源码).
前端·vue.js
ohyeah12 分钟前
JavaScript 词法作用域、作用域链与闭包:从代码看机制
前端·javascript
流星稍逝14 分钟前
手搓一个简简单单进度条
前端
uup18 分钟前
JavaScript 中 this 指向问题
javascript
倚栏听风雨36 分钟前
详解 TypeScript 中,async 和 await
前端
4***149040 分钟前
TypeScript在React中的前端框架
react.js·typescript·前端框架
小皮虾44 分钟前
告别服务器!小程序纯前端“图片转 PDF”工具,隐私安全又高效
前端·javascript·微信小程序
ohyeah1 小时前
我的变量去哪了?JS 作用域入门指南
前端·javascript
灼华_1 小时前
Vue 3 + Vite + Router + Pinia + Element Plus + Monorepo + qiankun 构建企业级中后台前端框架
前端