【发布时间】:2019-06-01 20:37:10
【问题描述】:
假设我在初始渲染时使用 useEffect 预取数据:
function myComponent(props) {
const { fetchSomething } = props;
...
...
useEffect(() => {
fetchSomething();
}, []);
...
...
}
我的 linter 警告我“React Hook useCallback 缺少依赖项”。它希望我将 fetchSomething 放入依赖项数组中。
问题是即使fetchSomething 会被更改,我也不希望组件重新获取数据。而且在我看来,大多数情况下 useEffect 使用一个函数,它并不关心函数是否被改变。
我不想关闭该警告,也不喜欢在我的代码中散布// eslint-disable-next-line react-hooks/exhaustive-deps。
这种行为背后的原因是什么?
这让我在使用 hooks 时感到不安全,好像我做错了什么。
【问题讨论】:
-
为什么你的消费者会发送一个 prop 来在 mount 上加载数据?只需将功能作为服务并调用它而不是道具。如果有的话,您的 fetchSomething 将是要查询的参数或数据。
标签: javascript reactjs react-hooks