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,防止渲染
相关推荐
xcLeigh5 分钟前
HTML5实现简洁的体育赛事网站源码
前端·html
渔舟唱晚@7 分钟前
Axios 取消请求的演进:CancelToken vs. AbortController
javascript
棉花糖超人8 分钟前
【从0-1的CSS】第1篇:CSS简介,选择器已经常用样式
前端·css
GISer_Jing12 分钟前
XHR / Fetch / Axios 请求的取消请求与请求重试
前端·javascript·网络
天涯学馆16 分钟前
微前端架构设计:从理论到实践的全面指南
前端·javascript·面试
Verin27 分钟前
Next.js+Wagmi+rainbowkit构建以太坊合约交互模版
前端·web3·以太坊
KenXu30 分钟前
🚀 Cursor 1.0 重磅发布!AI代码编辑器迎来革命性升级
前端
凌辰揽月31 分钟前
Web后端基础(Maven基础)
前端·pycharm·maven
梦想CAD控件36 分钟前
(VUE3集成CAD)在线CAD实现焊接符号自定义
前端·javascript·vue.js
小华同学ai37 分钟前
千万别错过!这个国产开源项目彻底改变了你的域名资产管理方式,收藏它相当于多一个安全专家!
前端·后端·github