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,防止渲染
相关推荐
Csvn8 分钟前
bundle优化
前端
slongzhang_36 分钟前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
北冥有鱼37 分钟前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚37 分钟前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端
用户372037492601843 分钟前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能1 小时前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师1 小时前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端
alsmile1 小时前
AI友好的可视化图形引擎自我革命:Meta2d.js 2.0 历时一年全新重写,性能与多人协作全面升级
前端·开源·数据可视化
行思理1 小时前
Nginx 跨站请求(CORS)配置完全指南:从原理到生产实践
java·前端·nginx
粥里有勺糖1 小时前
视野修炼-技术周刊第137期 | 编程已经面目全非
前端·github·ai编程