![](/img/trans.png)
[英]eslint should be listed in the project's dependencies, not devDependencies
[英]Should refs be in listed as dependencies for useEffect and such?
据我了解,useRef 返回的容器总是相同的——但在 useEffect 和类似函数中引用它们会导致 eslint 详尽的deps 警告。 在这种情况下忽略警告是否安全,以及避免使用警告阻塞 output 日志和禁用行注释的代码的好方法是什么? 或者我应该将它们放入依赖列表中以保持 eslint 快乐?
首次调用useRef
时,它会创建一个具有current
属性的 object。 此 object 在后续渲染中将保持不变。 即:对这个 object 的引用不会改变。
https://reactjs.org/docs/hooks-reference.html#useref
所以从依赖数组中省略它是安全的。
请参阅下面的代码(也可在 Sandbox 链接中找到):
https://codesandbox.io/s/cocky-dhawan-ys267?file=/src/App.js
const someRef = useRef({foo: "bar"});
let x = 1;
useEffect(() => {
console.log(someRef.current.foo);
console.log(x);
}, []); // THERE IS A WARNING HERE FOR THE "x"
eslint/exhaustive-deps
只担心x
,而不是someRef.current.foo
。
注意:我刚刚把x
放在那里以确保警告是由 eslint 触发的。
这背后的原因是useRef
与渲染周期无关。 我的意思是,它不会重新创建,也不会在每次渲染后自动更新,例如 state,渲染期间创建的道具或变量通常是。
你确定你收到这个useRef
的警告吗? 查看 CodeSandbox 链接并仔细检查。 检查您如何将它们引用到useEffect
,并检查您的 React 和 Eslint/plugin 版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.