Mic*_*rer 3 javascript reactjs redux react-redux
在react-redux v7中,我们现在有了useDispatch()钩子来获取对商店调度的引用。看到这里:https : //react-redux.js.org/api/hooks#usedispatch
将所得dispatch然后功能需要被列为任何依赖关系useEffect,useMemo等钩。为什么是这样?
经过一些测试,该应用程序仍然可以完美运行而不会dispatch被列为依赖项,因此我只能假定它没有变化。
在任何情况下dispatch功能都可能改变吗?
有两个答案。
首先,据我所知,React“钩子规则” ESLint规则知道如何专门处理内置钩子。例如,它知道useState()总是返回相同的setter函数实例,因此您不必将其包含在useEffect()依赖项数组中(调用中的dispatch函数同上useReducer())。
但是,皮棉规则不知道自定义钩子,无论它们来自库还是来自您自己的钩子。因此,由于useDispatch()是自定义钩子,因此lint规则必须假设无论发生什么变化dispatch都可以,并尝试告诉您需要将其列为依赖项。
第二个答案是可以将新的商店引用传递给<Provider>,在这种情况下store.dispatch,useDispatch()挂钩会返回不同的内容。
因此,实际上,该代码可以正常运行而无需包含dispatch在deps数组中,因为您的应用几乎始终都在使用同一商店实例。但是,由于皮棉规则不知道这一点,因此您可能仍需要将其包括在列表中以使其安静。
(来源:我是Redux维护者,并帮助指导了我们的hooks API的实现:))
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |