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

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,防止渲染
http://www.lryc.cn/news/139968.html

相关文章:

  • 从零开始配置Jenkins与GitLab集成:一步步实现持续集成
  • 高效多用的群集-Haproxy搭建Web集群
  • aws的s3匿名公开访问
  • 2023科隆游戏展:虚幻5游戏百花齐放,云渲染助力虚幻5高速渲染
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-2)
  • Linux 下 Mysql 的使用(Ubuntu20.04)
  • 牛客练习赛114
  • Http与Https
  • 前端通信(渲染、http、缓存、异步、跨域)自用笔记
  • 43.227.198.x怎么检查服务器里是否中毒情况?
  • Sentinel dashboard无法查询到应用的限流配置问题以及解决
  • 【Spring Boot】社交网站中验证用户登录的checkUser方法
  • edge浏览器进行qq截图过保爆决过程
  • 【Linux】Linux在防火墙firewall中开放或删除某端口
  • C++构造函数初始化列表
  • c语言调用mciSendString播放音乐
  • Qt:qRegisterMetaType为Qt信号和槽添加自定义参数类型
  • ffmpeg rtp发送video和audio并播放
  • CSS打字回删效果动画源码
  • Vue全局后置守卫
  • 【Go语言】基于Socket编程的P2P通信程序示例
  • 16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及Elasticsearch示例(2)
  • Java代码优化案例2:使用HashMap代替List进行数据查找
  • 每天一道leetcode:542. 01 矩阵(图论中等广度优先遍历)
  • SQL SERVER 日期函数相关内容
  • 多维时序 | MATLAB实现SCNGO-BiGRU-Attention多变量时间序列预测
  • 从零开始学习 Java:简单易懂的入门指南之JDK8时间相关类(十八)
  • Spring Boot实践八--用户管理系统(下)
  • C语言入门 Day_10 判断的进阶
  • 机器学习基础13-基于集成算法优化模型(基于印第安糖尿病 Pima Indians数据集)