React ESLint疑问:useReducer生成的dispatch无需作为依赖?
问题解答
这是预期的ESLint规则行为,原因如下:
- react-hooks/eslint-plugin插件的
exhaustive-deps规则已更新,将React官方保证引用稳定的函数默认排除在依赖检查之外,其中就包括useReducer返回的dispatch函数,以及useState返回的状态设置器。 - React官方明确说明,
useReducer的dispatch在组件整个生命周期内引用不会变化,属于「稳定标识」,即使不加入useEffect的依赖数组,也不会导致副作用逻辑出现不一致问题。ESLint规则的调整正是对齐了这一官方承诺。 - 此前版本的规则确实要求开发者将
dispatch加入依赖数组,但后续考虑到这类稳定函数不会引发依赖问题,同时能减少不必要的代码冗余,规则团队决定自动忽略对它们的依赖检查,因此现在省略dispatch不会触发ESLint报错。
内容的提问来源于stack exchange,提问作者Giraphi
相关产品推荐
相关产品推荐

