我试图让热重载与 react16.9.0
和 react-redux一起工作7.1.1
。
这是我的代码,我希望useEffect()
只调用一次加载数据(回调):
function Sidebar() {
const dispatch = useCallback(useDispatch(), []);
useEffect(() => {
console.info('useEffect');
dispatch(loadFields());
}, [dispatch]);
...
}
尽管useCallback()
用于记忆函数,但当我将更改保存到另一个 JS 文件时,useEffect()
再次调用中的回调,重新加载字段。
但是,如果我将useEffect()
函数的依赖关系从更改[dispatch]
为 just []
,那么它会按我想要的方式工作,并且不会在热重载时调用 inuseEffect()
的回调。但是如果我这样做,推荐的 React Eslint 会抱怨我没有包含dispatch
依赖项。
如何让 linter 开心,同时让热重载正常工作useDispatch()
?
其他症状:
- 使用静态
['anything']
也会导致热重载不起作用;这很奇怪,因为它应该等同于[]
.