gpt4 book ai didi

javascript - 是否应该将 refs 列为 useEffect 等的依赖项?

转载 作者:行者123 更新时间:2023-12-04 03:59:16 27 4
gpt4 key购买 nike

据我了解, useRef 返回的容器总是相同的——但在 useEffect 和类似函数中引用它们会导致 eslint 详尽的警告。在这种情况下忽略警告是否安全,以及避免用警告阻塞输出日志和禁用行注释的代码的好方法是什么?或者我应该将它们放入依赖列表中以保持 eslint 满意?

最佳答案

useRef第一次调用它会创建一个带有 current 的对象属性(property)。该对象将在后续渲染中保持不变。即:对该对象的引用不会改变。
https://reactjs.org/docs/hooks-reference.html#useref
enter image description here
所以从依赖数组中省略它是安全的。
请参阅下面的代码(也可在 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 .
enter image description here
注意:我刚刚把 x在那里确保警告是由 eslint 触发的。
这背后的原因是 useRef与渲染周期无关。我的意思是,它不会重新创建,也不会在每次渲染后自动更新,例如在渲染期间创建的状态、 Prop 或变量通常是。
你确定你收到了 useRef 的警告吗? ?查看 CodeSandbox 链接并仔细检查。检查您如何将它们引用到 useEffect并检查你的 React 和 Eslint/plugin 版本。

关于javascript - 是否应该将 refs 列为 useEffect 等的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63346113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com