gpt4 book ai didi

javascript - Redux 调度在什么情况下可能会发生变化?

转载 作者:行者123 更新时间:2023-12-03 13:29:12 25 4
gpt4 key购买 nike

在react-redux v7中,我们现在有useDispatch()钩子(Hook)来获取对存储调度的引用。参见这里:https://react-redux.js.org/api/hooks#usedispatch

然后需要将生成的 dispatch 函数列为任何 useEffectuseMemo 等 Hook 的依赖项。这是为什么?

经过一些测试,该应用程序仍然可以完美运行,而没有将 dispatch 列为依赖项,因此我只能假设它没有改变。

dispatch 函数是否会发生变化?

最佳答案

这个问题有两个答案。

首先,据我所知,React“钩子(Hook)规则”ESLint规则知道如何专门处理内置钩子(Hook)。例如,它知道 useState()始终返回相同的 setter 函数实例,因此您不必将其包含在 useEffect() 中依赖项数组(与 dispatch 调用中的 useReducer() 函数同上)。

但是,lint 规则了解自定义 Hook ,无论它们是来自库还是您自己的。所以,从useDispatch()开始是一个自定义钩子(Hook),lint 规则必须假设无论这个 dispatch事情可以改变,并试图告诉您需要将其列为依赖项。

第二个答案是可以将新的商店引用传递给 <Provider> ,在这种情况下有一个不同的 store.dispatchuseDispatch() 返回钩子(Hook)。

所以,实际上,代码在不包含 dispatch 的情况下也能正常运行。在 deps 数组中,因为您的应用程序几乎肯定始终使用同一个商店实例。但是,由于 lint 规则不知道这一点,因此您可能需要将其包含在列表中以使其保持安静。

(来源:我是 Redux 维护者,帮助指导我们的 hooks API 的实现:) )

关于javascript - Redux 调度在什么情况下可能会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56795607/

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