重新选择重用的选择器意外行为
Reselect reused selector unexpected behaivor
上下文是一个带有 reselect 和 redux 的 React 应用程序,但是我的问题可能只是 'pure' JS。我的问题是我不明白为什么我不能重用选择器。
我有一个选择器 X
。另外,我有一个makeGetX如下:
const X = createSelector( [...], (// checks for a specific flag and manipulates)=> x );
const makeGetX = () => X;
我的一些组件只使用 X 和一些制造商。
在那之前,我曾经只有 X 定义的制造商:
const makeGetX = () => createSelector( [...], (// checks for a specific flag and manipulates)=> x );
前者在使用上述特定功能时效果很好。
每当我使用制造商时,如第一个片段所示重构它(无限更新)它。
使用的上下文是我有多个组件使用 makeMapStateToProps
并且在其中
...
const getX = makeGetX()
...
return (state,ownProps) => ({..., X: getX(state, ownProps), ...});
在我的连接函数中调用 makeMapStateToProps
。
现在我通过在两个定义中复制代码:(来解决它。
将不胜感激任何见解或解释。
谢谢!
嗯,我猜你在内部多次调用 createSelector
。
所以它 returns 你不同的函数对象,里面有一个专用的 memo
存储。
这就是 shallow
检查失败的原因(connect
在后台进行简单的 shallow-equal
检查)。
上下文是一个带有 reselect 和 redux 的 React 应用程序,但是我的问题可能只是 'pure' JS。我的问题是我不明白为什么我不能重用选择器。
我有一个选择器 X
。另外,我有一个makeGetX如下:
const X = createSelector( [...], (// checks for a specific flag and manipulates)=> x );
const makeGetX = () => X;
我的一些组件只使用 X 和一些制造商。 在那之前,我曾经只有 X 定义的制造商:
const makeGetX = () => createSelector( [...], (// checks for a specific flag and manipulates)=> x );
前者在使用上述特定功能时效果很好。 每当我使用制造商时,如第一个片段所示重构它(无限更新)它。
使用的上下文是我有多个组件使用 makeMapStateToProps
并且在其中
...
const getX = makeGetX()
...
return (state,ownProps) => ({..., X: getX(state, ownProps), ...});
在我的连接函数中调用 makeMapStateToProps
。
现在我通过在两个定义中复制代码:(来解决它。
将不胜感激任何见解或解释。 谢谢!
嗯,我猜你在内部多次调用 createSelector
。
所以它 returns 你不同的函数对象,里面有一个专用的 memo
存储。
这就是 shallow
检查失败的原因(connect
在后台进行简单的 shallow-equal
检查)。