上下文是一个带有 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.现在我通过在两个定义中复制代码来解决它:(。将不胜感激任何见解或解释。谢谢!
1 回答
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
四季花海
TA贡献1811条经验 获得超5个赞
好吧,我猜你在createSelector
内部调用了多次。
所以它会返回不同的函数对象,其中有一个专用的memo
存储空间。
这就是shallow
检查失败的原因(在引擎盖下connect
进行简单的shallow-equal
检查)。
添加回答
举报
0/150
提交
取消