reactjs - 为什么命名函数作为第一个参数传递给 useEffect 不是必要的依赖项?
问题描述
[已解决] 我相信下面的2个效果应该有相同的效果。但是为什么 eslint 规则在第二种情况下不报错呢?
在这两种情况下都应该是强制依赖,因为 doSomething 可以改变和改变效果。
const doSomething = useCallback(() => {
void someProp;
}, [someProp]);
useEffect(()=> doSomething(), [doSomething]); // eslint(react-hooks/exhaustive-deps) complains if I remove the dependency
useEffect(doSomething, []); // no complaint here, why?
编辑:它实际上是在一段时间前修复的(甚至在我写那个问题之前)。 https://github.com/facebook/react/pull/18435
解决方案
useEffect
不应该返回一个值,除了一个清理函数。
例如:
useEffect(() => {
return () => {}
}, [])
而您正在使用doSomething
,它是在钩子外部指定的,在钩子内部useEffect
。
推荐阅读
- javascript - CSS/JavaScript 表行/数据显示和隐藏不适用于我的数据表。?
- javascript - 更改 MongoDB 文档/对象中的所有 MongoDB 对象 ID
- python - 理解变量选择的大型决策树图?
- variables - 我们可以将所有数据类型合二为一吗?
- python - 如何使用 Python 在 BeautifulSoup 中的同一 div 中提取具有相同标签的元素?
- python - Pandas - 在数据帧之间查找值并为匹配的系列添加值
- ruby-on-rails - Rails Admin -> 仅当用户具有角色 admin 时才能访问
- c++ - 如何提高 dnn_mmod_face_detection 示例的速度
- python - 在python中获取带有硒的元素数组
- r - 内容错误(urlb,as = "text"):is.response(x) 在 R 中不是 TRUE