最近在接觸selector思想。redux的mapStateToProps引起大量的重複計算。reselect的誕生就是為了解決重複計算,期待能最大化的進行cache。Selector的實現和使用感覺都比較簡單。要贊一下這個理念。
Selector支援的功能
- selector中可以構造我們想要的props資料,從而最小化了store中需要儲存的資料
- 相同selector的結果不需要重複計算
- selector之間可以層級巢狀的
Selector的使用
Selector的使用主要看是否需要帶引數、重寫回撥函式等。使用具體參見github reselect 需要注意的問題是在selector的狀態中未被修改的部分應該保持一樣,否則會引起selector的重新計算,不能達到cache(應該是影響了equalityCheck)
Selector的實現
實現中的幾個要點:
- 輸入的state是否相同(引用or值) #defaultEqualityCheck
- createSelectorCreator 支援遞迴呼叫(功能1)
- createStructuredSelector構造props
可以結合Immutable進行使用
加強版
後續還有selector的map等