面试题答案
一键面试- 依赖数组的作用:
useEffect
钩子中的依赖数组用于控制副作用函数(useEffect
的回调函数)的执行时机和频率。它通过对比依赖数组中值的变化,来决定是否重新执行副作用函数。
- 依赖数组为空的情况:
- 执行时机和频率:副作用函数仅在组件挂载后执行一次,在组件卸载时执行清理函数(如果有)。这是因为依赖数组为空时,React 会认为没有任何值会影响副作用函数的执行,所以只在组件挂载和卸载这两个生命周期节点执行相关操作。
- 原理:React 内部会在每次渲染后检查依赖数组。当依赖数组为空时,它发现没有依赖项发生变化,所以不会重新触发副作用函数。只有在组件挂载和卸载时,才会执行相应的副作用和清理操作。
- 依赖数组包含某些值的情况:
- 执行时机和频率:每当依赖数组中的任何一个值发生变化时,副作用函数就会重新执行。例如,依赖数组为
[a, b]
,当a
或b
的值改变时,副作用函数就会被触发。 - 原理:React 在每次渲染后会对比新的依赖数组和上一次渲染的依赖数组。如果发现其中有值发生了变化,就会认为副作用函数可能依赖于这些新的值,从而重新执行副作用函数,以确保副作用能够反映最新的数据状态。
- 执行时机和频率:每当依赖数组中的任何一个值发生变化时,副作用函数就会重新执行。例如,依赖数组为
- 不传入依赖数组的情况:
- 执行时机和频率:副作用函数会在每次组件渲染后都执行,包括初始挂载和后续的状态或属性更新导致的渲染。
- 原理:不传入依赖数组时,React 无法通过对比依赖来判断是否需要重新执行副作用函数。所以它默认副作用函数依赖于组件中的所有数据,每次渲染后都执行副作用函数,以确保副作用能够及时更新以反映最新的组件状态。