在 React 中,useEffect
是一个用于处理副作用的 Hook。它接收两个参数:一个是回调函数,用于执行副作用操作;另一个是依赖数组,用于指定侦听的变量或状态。这个依赖数组是可选的。
-
传递空数组:当传递空数组作为
useEffect
的第二个参数时,意味着副作用只在组件首次渲染时执行一次,并且不会侦听或重新运行副作用。这是因为空数组表示没有任何依赖,所以副作用只与组件的初始状态相关。 -
传递依赖数组:当传递一个非空依赖数组时,
useEffect
会侦听数组中列出的依赖项。只有当依赖项发生变化时,副作用函数才会重新运行。这种方式用于在依赖项变化时触发副作用的执行,例如在状态或 props 发生改变时更新组件。
使用空数组作为第二个参数的常见用例是希望实现类似于componentDidMount
的效果,只运行一次副作用。而传递依赖数组是为了在特定依赖项更改时触发副作用的重新运行。
需要注意的是,如果不传递第二个参数,即省略依赖数组,副作用将在每次组件渲染时都执行。这可能会导致性能问题或意外的行为,因此建议始终传递一个明确的依赖数组。