0

我想在安装组件时有意使用 useEffect 执行一些代码。因此,我故意使用一个空数组[]作为依赖项。

因为我使用的是 TypeScript(我至少认为这是原因),所以我总是收到警告:“React Hook useEffect has missing dependencies ...”

我不想添加预编译器建议的所有依赖项,因为这会导致我的 useEffect 挂钩的意外执行。

我可以做些什么来删除警告消息而不添加(不想要的,从我的角度来看,不必要的,甚至适得其反的)依赖项?

4

1 回答 1

0

如果你真的想要,你可以通过将依赖项移出useEffect函数体来消除警告。这使得预编译器无法检测到实际的依赖关系。例子:

const [a, setA] = useState<string>('abc');
useEffect(() => {
    console.log(a);
}, []);

可能成为

const [a, setA] = useState<string>('abc');
function printA() {
    console.log(a);
}
useEffect(() => {
    printA();
}, []);

不过,您应该注意副作用——警告有充分的理由,并且您的代码可能会导致其他人可能没有预料到的行为。

于 2021-09-26T11:30:03.493 回答