持续补充。

1. setState 数据合并一次处理

React底层对setState进行性能的提升机制。 数据多次改变,合并一次处理。

降低React diff match 比对频率。

LIN.JY666:[React] 4 - setState / 异步还是同步?​zhuanlan.zhihu.com

2. 作用域绑定 在constructor 里只绑定一次

将this.handleClick3 = this.handleClick3.bind(this) 放到constructor。

保证该函数的作用域绑定一次,避免其他的渲染。

// 三种方式
// 1. 构造器绑定
constructor (props) {super(props)this.handleClick3 = this.handleClick3.bind(this)}// 2. 箭头函数
<button onClick={() => this.handleClick2()}>// 3. bind方式
<button onClick={this.handleClick4.bind(this)}>

LIN.JY666:[React] 3 - 自动绑定 (事件绑定)​zhuanlan.zhihu.com

3. React Fiber 16+ 任务调度优化

  • diff 如果很深的时候,会一直占用JS主进程的(因为单线程),用户操作效果就是,卡顿。
  • Fiber 本质上是对 调用的一个优化。分片,就是大的任务分成小的 一步步的解决。
  • React Fiber 是一种基于浏览器的单线程调度算法。16以下都是用的递归算法,无法停止。16+ 用的都是循环方式。

LIN.JY666:[React] 6 - React Fiber 基于浏览器的单线程调度算法​zhuanlan.zhihu.com

4. 组件

  • shouldComponentUpdate 可执行业务决定是否render
  • 无状态使用Pure 组件
  • HOC 高阶组件模式,复用组件。

5. React key

VirtualDOM diff算法,用key来提升比对速度。

6. 其他工程方面

  • webpack 按需加载, 代码分割,单个bundle打包多个(一个vendor + 一个业务),tree shaking。
  • 服务端渲染。

react循环setstate_[React] 8 - React 自身或工程性能优化点?相关推荐

  1. react循环key值_01 React快速入门(一)——使用循环时对于‘key’报错处理

    问题描述: 在刚开始接触react学习的时候,编写一个小功能时,使用了map来循环一个数组中的数据,输出到前端页面,代码调试运行后正常显示,但是打开控制台却发现有一条关于"key" ...

  2. react循环渲染数据

    react循环输出元素 代码说明:index->索引 key:循环语句时的唯一标识 一.循环普通数组 1.map循环方式(foreach同理) render() {const items = [ ...

  3. react仿微信聊天室|react即时聊天IM系统|react群聊

    react+redux仿微信聊天IM实战|react仿微信界面|react多人群聊天室 最近一直捣鼓react开发,就运用react开发了个仿微信聊天室reactChatRoom项目,基于react+ ...

  4. React学习笔记7:React使用注意事项

    1. setState setState更新状态的2种写法 方式一:setState(stateChange, [callback])------对象式的setState stateChange为状态 ...

  5. React学习笔记6:React Hooks API总结

    useState-保存状态(惰性初始化) 作用 函数组件添加状态 注意事项 初始化以及更新state 用来声明状态变量 使用步骤(使用useState来创建状态) 引入import React,{us ...

  6. React Native开发之必备React基础

    为了帮助大家快速上手React Native开发,在这本节中将向大家介绍开发React Native所需要的一些React必备基础知识. 概述 本节课将从React的特点.如何使用React.JSX语 ...

  7. React.js 小书 Lesson5 - React.js 基本环境安装

    React.js 小书 Lesson5 - React.js 基本环境安装 本文作者:胡子大哈 本文原文:http://huziketang.com/books/react/lesson5 转载请注明 ...

  8. react 遍历对象_探索:跟随《Build your own React》实现一个简易React

    文章介绍 build-your-own-react是一篇操作说明书,指导用户一步步实现一个简易的React,从中了解到React的大体工作流程.这篇文章是我的观后整理和记录,或许对大家会有所帮助. 构 ...

  9. react实现汉堡_利用 React 高阶组件实现一个面包屑导航

    什么是 React 高阶组件 React 高阶组件就是以高阶函数的方式包裹需要修饰的 React 组件,并返回处理完成后的 React 组件.React 高阶组件在 React 生态中使用的非常频繁, ...

最新文章

  1. 为什么yamlp中没有cplex_在《英雄联盟》中,为什么有些T1英雄并没有我们想象中那么强势?...
  2. 值得推荐的好书——评《亮剑.NET.图解C#开发实战》
  3. JDBC-day01
  4. 003thinkphp 数据库查询及表关联
  5. 【最强VSCode】之管理MySql数据库
  6. 《javaScript100例|01》超级经典一套鼠标控制左右滚动图片带自动翻滚
  7. Android 扫描二维码demo
  8. 【转】什么是CORS
  9. c语言3368题目,电大《C语言程序设计课程》期末考试复习资料
  10. Linux——VIM多选缩进及高级命令
  11. Linux 下rpm包搭建LAMP环境
  12. delphi 调用 c# 写的webservice
  13. python测试笔试题1
  14. 定制属于自己的自动化安装的linux系统镜像
  15. DDoS攻击重大历史事件
  16. 游戏窗口化工具_仙剑奇侠传16珍藏版大合集(含各个版本和工具)
  17. LINUX命令大全详解备忘录
  18. 面试题 10.11. 峰与谷 ( 思维 )
  19. mysql相关的dll_libmySQL.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  20. 阿兰•图灵与人工智能

热门文章

  1. 字符设备驱动程序之按键——同步互斥阻塞
  2. u-boot移植第五弹——2013.10u-boot通过tftp下载到内存中运行
  3. java 管理对象是什么_Java工程师(16)对象的管理
  4. mysql创建分区是否存在_mysql中如何判断是否支持分区
  5. php mysql 字段备注_MySQL下读取 表/字段 的说明备注信息
  6. 5年,14款近满分神作,这个独立团队打造了他们的游戏宇宙
  7. 一天学完spark的Scala基础语法教程八、集合(idea版本)
  8. SDN第二章 Ubuntu开启/关闭防火墙
  9. 【Auto.js】[系统Intent]_系统设置页面的相关intent跳转
  10. 什么叫网站灰度发布?