gpt4 book ai didi

javascript - 重新选择重用选择器意外行为

转载 作者:行者123 更新时间:2023-12-02 22:55:40 25 4
gpt4 key购买 nike

上下文是一个带有 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 );

只要使用上述特定功能,前者就非常有效。每当我使用生成器时,如第一个代码片段所示重构它就会破坏(无限更新)它。

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

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

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

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

希望得到任何见解或解释。谢谢!

最佳答案

好吧,我猜您在内部多次调用createSelector
因此它会返回不同的函数对象,其中有一个专用的 memo 存储。
这就是 shallow 检查失败的原因(connect 正在底层进行简单的shallow-equal 检查)。

关于javascript - 重新选择重用选择器意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57990662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com