前端/移动开发面试题更新 2026-08-05

在 React 应用中,当组件的 props 发生变化时,通常会触发哪些更新流程或方法?请说明组件更新的主要途径及其触发机制。

前端/移动开发技术原理React

考察说明

考察对 React 组件更新机制的理解,特别是 props 变化时的更新流程。

回答思路

  1. 【回答框架 1】在 React 中,组件的 props 由父组件传入,当父组件重新渲染或传递新的 props 时,子组件会接收到新的 props 并触发更新。次更新通常由父组件的 state 变化或父组件重新执行 render 引起。
  2. 【回答框架 2】组件更新时,React 会调用一些生命周期方法或 hook。在类组件中,更新阶段会依次调用 shouldComponentUpdate、componentWillUpdate、render 和 componentDidUpdate;在函数组件中,useEffect 和 useLayoutEffect 会在渲染后执行,可以响应 props 变化。
  3. 【回答框架 3】除了常规的重新渲染,还可以通过强制更新方法,如类组件中的 forceUpdate,跳过 shouldComponentUpdate 直接触发更新,但应避免滥用。
  4. 【回答框架 4】React 还提供了优化手段,如 React.memo 和 PureComponent,它们通过浅比较 props 来决定是否跳过不必要的更新,从而提升性能。
  5. 【回答框架 5】在函数组件中,可以使用 useEffect 监听 props 变化,并在回调中执行相应逻辑,但需要注意依赖数组的正确设置,避免遗漏或多余依赖。
  6. 【关键点 1】props 变化通常由父组件重新渲染触发,子组件随之更新。
  7. 【关键点 2】类组件在更新阶段会调用 shouldComponentUpdate、componentDidUpdate 等生命周期方法。
  8. 【关键点 3】函数组件可使用 useEffect 响应 props 变化,配合依赖数组。
  9. 【关键点 4】React.memo 和 PureComponent 通过浅比较 props 减少不必要的渲染。
  10. 【关键点 5】forceUpdate 可强制更新,但需谨慎使用。
  11. 【易错点 1】误以为 props 变化会直接触发组件更新,实际需父组件重新渲染。
  12. 【易错点 2】在 useEffect 中遗漏依赖项,导致回调不执行或重复执行。
  13. 【易错点 3】依赖浅比较时,未注意引用类型的变化,可能导致组件不更新。