我想在安装组件时有意使用 useEffect 执行一些代码。因此,我故意使用一个空数组[]
作为依赖项。
因为我使用的是 TypeScript(我至少认为这是原因),所以我总是收到警告:“React Hook useEffect has missing dependencies ...”
我不想添加预编译器建议的所有依赖项,因为这会导致我的 useEffect 挂钩的意外执行。
我可以做些什么来删除警告消息而不添加(不想要的,从我的角度来看,不必要的,甚至适得其反的)依赖项?
我想在安装组件时有意使用 useEffect 执行一些代码。因此,我故意使用一个空数组[]
作为依赖项。
因为我使用的是 TypeScript(我至少认为这是原因),所以我总是收到警告:“React Hook useEffect has missing dependencies ...”
我不想添加预编译器建议的所有依赖项,因为这会导致我的 useEffect 挂钩的意外执行。
我可以做些什么来删除警告消息而不添加(不想要的,从我的角度来看,不必要的,甚至适得其反的)依赖项?
如果你真的想要,你可以通过将依赖项移出useEffect
函数体来消除警告。这使得预编译器无法检测到实际的依赖关系。例子:
const [a, setA] = useState<string>('abc');
useEffect(() => {
console.log(a);
}, []);
可能成为
const [a, setA] = useState<string>('abc');
function printA() {
console.log(a);
}
useEffect(() => {
printA();
}, []);
不过,您应该注意副作用——警告有充分的理由,并且您的代码可能会导致其他人可能没有预料到的行为。