useEffect(() => {
const apiCall = async () => {
try {
let newSearchFormOptions = { ...searchFormOptions };
...
setSearchFormOptions(newSearchFormOptions);
} catch (e) {
setPageState({ error: e.error });
} finally {
setPageState({ isLoading: false });
}
};
apiCall();
}, []);在我将eslint添加到项目之前,上面的代码不存在eslint问题。在将eslint规则添加到项目之后,它显示"React缺少一个依赖项:‘searchFormOptions’“。但是,searchFormOptions是状态,setSearchFormOptions将更新它,这会使"apiCall“一次又一次地被调用。我知道我们可以使用eslint来禁用这个警告,但我担心的是,当我计划在组件挂载时只触发一次"apiCall“时,eslint规则是否过于敏感。我们需要依赖eslint规则,还是我们需要自己对其进行双重检查,然后使用eslint禁用此警告,还是我们有其他解决办法?
提前谢谢。
发布于 2021-06-19 07:57:33
反应小组成员的报价:
你可以把 // eslint-禁用-下一行反应-钩子/详尽-deps 在违规之前如果有一个很好的理由。通常,禁用它是一个错误,并会明显地咬你以后。(大多数情况下,人们认为禁用是安全的,这是不安全的,会导致陈旧的关闭。)
有时候,当我知道我只想在挂载期间运行一次效果的时候,我已经禁用了它。
https://stackoverflow.com/questions/68044541
复制相似问题