猿问

重新选择重用的选择器意外行为

上下文是一个带有 reselect 和 redux 的 React 应用程序,但是我的问题可能只是“纯”JS。我的问题是我不明白为什么我不能重用选择器。


我有一个选择器X。另外,我有一个 makeGetX 如下:


const X = createSelector( [...], (// checks for a specific flag and manipulates)=> x );

const makeGetX = () => X;

我的一些组件只是使用 X 和一些制造商。在此之前,我曾经只有带有 X 定义的 maker:


const makeGetX = () => createSelector( [...], (// checks for a specific flag and manipulates)=> x );

前者在使用上述特定功能时效果很好。每当我使用 maker 时,按照第一个片段中所示重构它就会中断(无限更新)它。


使用的上下文是我有多个组件使用 amakeMapStateToProps并且在其中


...

const getX = makeGetX()

...

return (state,ownProps) => ({..., X: getX(state, ownProps), ...});

在我的连接函数中,我调用makeMapStateToProps.


现在我通过在两个定义中复制代码来解决它:(。


将不胜感激任何见解或解释。谢谢!


互换的青春
浏览 144回答 1
1回答

四季花海

好吧,我猜你在createSelector内部调用了多次。所以它会返回不同的函数对象,其中有一个专用的memo存储空间。这就是shallow检查失败的原因(在引擎盖下connect进行简单的shallow-equal检查)。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答