[toc]
## React組件優化
### 屬性傳遞優化
傳遞參數的時候要少傳,并且公用一份數據

或則直接使用
```
//類中
handleClick=()=>{
}
```
不僅綁定事件是這樣,一般的屬性傳遞也要注意

可以放在構造函數里(只會生成一次)
另外屬性往下傳遞時,傳遞需要的部分,不要整個就往下傳了。
### 多組件優化
只要父組件重新渲染,子組件也會重新渲染

#### 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

第一個參數也可以是一個數組

## chrome性能檢測
首先在url末尾添加`react_perf`

接著點開`Performance`,點擊`record`進行檢測

選中要查看的節點 點開UserTiming

- 空白目錄
- 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