【发布时间】:2019-10-14 21:36:54
【问题描述】:
我正在尝试使用 react 16.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] 更改为只是 [],那么它会按照我想要的方式工作,并且 useEffect() 中的回调不会不得到调用热重载。但如果我这样做,推荐的 React Eslint 会抱怨我没有包含 dispatch 依赖项。
如何让 linter 快乐,同时让热重载与 useDispatch() 正常工作?
其他症状:
- 使用静态
['anything']也会导致热重载不工作;这很奇怪,因为它应该等同于[]。
【问题讨论】:
标签: reactjs redux react-redux react-hooks hot-reload