【发布时间】:2021-07-04 15:01:50
【问题描述】:
正如所说,useEffect 钩子是我们进行副作用相关部分的地方。我对应该在 useEffect hook 的依赖项数组中传递哪些依赖项感到困惑?
React 文档说
如果您使用此优化,请确保数组包含组件范围内的所有值(例如 props 和 state),这些值会随时间变化并被效果器使用。否则,您的代码将引用以前渲染中的陈旧值。
考虑一个例子:
export default function App() {
const [count, setCount] = React.useState(0);
React.useEffect(() => {
console.log("component mounted");
}, []);
const update = () => {
for(let i=0; i<5;i++){
setCount(count+i)
}
};
return (
<div>
{console.log(count)}
{count}
<button type="button" onClick={update}>
Add
</button>
</div>
);
}
按照上面的说法,我们应该将count变量作为依赖传递给useEffect,它会让useEffect重新运行。
但在上面的示例中,不传递 count 依赖项不会对 UI 造成任何问题。没有陈旧的价值。变量按预期更新,UI 使用精确值重新渲染,记录当前值。
所以我的问题是,我们为什么要将 count 变量作为依赖项传递给 useEffect。界面是否正常工作?
更新
我知道每次依赖数组中的值发生变化时都会触发 useEffect 回调。我的问题是什么应该进入依赖数组?我们真的需要传递状态变量吗?
提前致谢。
【问题讨论】:
-
您没有在 useEffect 中实现任何依赖于 count 变量的逻辑。没有它依赖或没有依赖,它没有任何区别
-
@DebarshiBhattacharjee 如果依赖项为空,即[],那么它只会调用一次 useEffect 的回调,但是如果其中提到了依赖项,那么每次依赖项更改时都会调用回调。
-
请阅读更新部分
标签: reactjs react-hooks