[toc]
## React组件优化
### 属性传递优化
传递参数的时候要少传,并且公用一份数据
![](https://box.kancloud.cn/2668babae85c697ed71bc7833b5ef518_497x170.png)
或则直接使用
```
//类中
handleClick=()=>{
}
```
不仅绑定事件是这样,一般的属性传递也要注意
![](https://box.kancloud.cn/da6b5668ab90aef9ff8427a86e43b2db_656x252.png)
可以放在构造函数里(只会生成一次)
另外属性往下传递时,传递需要的部分,不要整个就往下传了。
### 多组件优化
只要父组件重新渲染,子组件也会重新渲染
![](https://box.kancloud.cn/9719527132e6fbae6182863638a162f0_588x341.png)
#### shouldComponentUpdate
So,这种情况就轮到我们的`shouldComponent`登场了
##### immutable
在shouldComponetUpdate中如果我们要比较的是两个层级比较深的对象,会很难操作的,需要递归比较。
我们不能直接obj1==obj2这样比较,因为如果我们改变obj1是通过obj1.xx这样改变的,那么obj2仍然是obj1的地址,这样判断就不会放行渲染了,纵然内容已经改变。
而如果我们的obj1是被替换成一个新的obj2,这样虽然不会存在地址相同的问题,但可能他们的内容又是相同的,
故,这就轮到`immutable.js`登场了
- Map
类似于对象
- List
有序可重复的列表 类似于数组
-
无需不可重复的 类似于es6 的set
#### PureComponent
如果只是`props`(非对象)没有`state`的情况,我们可以让子组件继承`PureComponent`,会自动在shouldComponent触发时比较新旧`props`
### key
不要用索引作为key
因为如果一个数组`[1,2,3,4]`,你把第一项干掉,后面的项的索引都会往前移,但其实它们的内容并没有改变
## Redux 性能优化
### reselect
![](https://box.kancloud.cn/cb793de4712e0bd68cec1ac94294f5d2_526x541.png)
第一个参数也可以是一个数组
![](https://box.kancloud.cn/18ccdcd48eb6af7eed4d68f191fad9a0_513x340.png)
## chrome性能检测
首先在url末尾添加`react_perf`
![](https://box.kancloud.cn/8e60843fe29f5c75bff47677d8f9a3b0_227x31.png)
接着点开`Performance`,点击`record`进行检测
![](https://box.kancloud.cn/d44dbf72662005d5503d114d489d8dda_515x394.png)
选中要查看的节点 点开UserTiming
![](https://box.kancloud.cn/52c7abe2e4248ecc275627ba30944cfd_657x284.png)
- 空白目录
- 01.JSX,了解一下?
- JSX与虚拟DOM
- React
- 02.React文档精读(上)`
- React路由
- 关于BrowserRouter
- 关于Route
- 应用
- 权限认证
- case1
- context
- 新context
- 03.React路由
- 04.Diff
- 05.styled-components
- redux设计思想与API
- redux实现1
- 06.redux2
- 06.redux3
- 关于状态初始化
- saga
- 新版
- 使用saga进行业务逻辑开发
- react-router-redux
- React性能优化
- immutable使用
- 未整理
- FAQ
- 常用中间件
- pureComponent
- 项目相关总结
- antd分尸
- 按需加载
- ReactWithoutJSX
- 我的组件库
- C领域
- 用户接口
- htmlType
- style
- show
- conjure
- grid
- inject
- stop
- 内部接口
- 衍生组件
- Button
- 报错集锦
- ReactAPI
- 类上的那些属性
- prop-types
- React.createElement
- React.cloneElement
- React.Children和props.children
- react元素和react组件关于作为children方面的那些问题
- react组件与虚拟dom
- ref