多个组件使用相同的选择器,重新选择

时间:2017-06-13 03:39:57

标签: javascript reactjs redux reselect

我正在使用重新选择库。 我有很多组件,每个组件连接(在他们的stateProps中)到某个选择器(用reselect实现,让我们称之为选择器A)。每当选择器A的一个参数(也是选择器允许参考B,C,D)改变时,选择器A重新计算并为每个连接的组件单独调用。由于这种计算密集,这使我在性能上花费了很多。有没有办法避免这种情况并计算一次? 感谢

1 个答案:

答案 0 :(得分:0)

重新选择库implements memoization for the selectors。仅当选择器的输入值发生更改时,才会重新计算使用 createSelector 函数创建的选择器。否则,选择器将返回其先前的memoized值 - 跨组件。来自reselect documentation

  

如果输入选择器的值与前一个选择器的调用相同,它将返回先前计算的值,而不是调用转换函数。

这要求您在组件之间重用相同的选择器功能。通常,您可以使用reducers(例如,在 reducers.js 中)创建选择器,以构建您选择的状态。您还应该组合选择器以获得额外的智能,以便还可以记忆在不同选择器之间共享的子状态。