请解释 React 中 useEffect 的含义,并阐述它在函数组件中承担哪些职责?
考察说明
考察对 React Hooks 中副作用处理机制的理解,以及在实际开发中的应用。
回答思路
- 【回答框架 1】useEffect 是 React 提供的 Hook,用于在函数组件中执行副作用操作。副作用指组件渲染之外的影响,如数据获取、订阅、手动修改 DOM 等。
- 【回答框架 2】它接受两个参数:回调函数和依赖数组。回调函数在组件挂载或依赖项变化后执行,返回的清理函数在组件卸载或依赖项下次变化前调用,用于清除副作用,避免内存泄漏。
- 【回答框架 3】依赖数组控制执行时机:空数组表示仅挂载时执行;省略则每次渲染后执行;包含具体值时,只有这些值变化才执行。清理函数是 useEffect 的关键特性,确保重复执行时正确清理旧副作用。
- 【回答框架 4】常见用途包括异步数据请求、事件监听、定时器管理、状态同步等。使用时需注意避免无依赖导致的频繁渲染,以及闭包捕获过时值问题。
- 【关键点 1】useEffect 用于在函数组件中执行副作用,替代生命周期方法。
- 【关键点 2】返回值用于清理副作用,如取消订阅、清除定时器。
- 【关键点 3】依赖数组决定执行时机和频率,空数组表示仅挂载时执行。
- 【关键点 4】使用时需避免产生不必要的渲染或闭包陷阱。
- 【易错点 1】忘记提供清理函数,可能导致内存泄漏或重复订阅。
- 【易错点 2】依赖数组处理不当,如遗漏依赖导致闭包捕获旧值。
- 【易错点 3】过度依赖 useEffect 进行状态同步,可能引发性能问题。