最近在接触selector思想。redux的mapStateToProps引起大量的重复计算。reselect的诞生就是为了解决重复计算,期待能最大化的进行cache。Selector的实现和使用感觉都比较简单。要赞一下这个理念。
Selector支持的功能
- selector中可以构造我们想要的props数据,从而最小化了store中需要存储的数据
- 相同selector的结果不需要重复计算
- selector之间可以层级嵌套的
Selector的使用
Selector的使用主要看是否需要带参数、重写回调函数等。使用具体参见github 需要注意的问题是在selector的状态中未被修改的部分应该保持一样,否则会引起selector的重新计算,不能达到cache(应该是影响了equalityCheck)
Selector的实现
实现中的几个要点:
- 输入的state是否相同(引用or值) #defaultEqualityCheck
- createSelectorCreator 支持递归调用(功能1)
- createStructuredSelector构造props
可以结合Immutable进行使用
加强版
后续还有selector的map等