为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

互换的青春 2021-10-21 13:26:29
上下文是一个带有 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 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

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

查看完整回答
反对 回复 2021-10-21
  • 1 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信