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

在 React 应用中,有哪些方法可以获取某个组件渲染后对应的 DOM 节点?请描述它们的适用场景或限制。

前端/移动开发编码实现技术原理React

考察说明

考查对 React 中 DOM 引用(ref)机制的理解与应用能力。

回答思路

  1. 【回答框架 1】在 React 中,主要通过 ref 对象来获取组件对应的 DOM 元素。对于函数组件,可使用 useRef 创建 ref 并赋值给 JSX 元素的 ref 属性,该 ref 对象的 current 属性会指向对应的 DOM 节点。
  2. 【回答框架 2】对于类组件,可以使用 React.createRef 创建 ref,同样赋值给元素 ref 属性,或者使用回调 ref 函数,它会在组件挂载或卸载时被调用,分别传入 DOM 节点或 null。
  3. 【回答框架 3】当需要获取的是自定义类组件的实例时,ref 会指向组件的实例;但函数组件默认不暴露实例,若需访问其内部 DOM,可使用 forwardRef 转发 ref。
  4. 【回答框架 4】直接操作 DOM 的场景有限,更多应通过状态或受控组件管理数据;ref 常用于管理焦点、文本选择、媒体播放或集成第三方 DOM 库。
  5. 【回答框架 5】在函数组件中,useRef 创建的 ref 对象在生命周期内保持不变,且可用于保存可变值,但更新 ref 不会触发重新渲染。
  6. 【关键点 1】函数组件通过 useRef 获取 DOM 元素。
  7. 【关键点 2】类组件可通过 createRef 或回调 ref 获取。
  8. 【关键点 3】forwardRef 可用于函数组件向父组件暴露 DOM 引用。
  9. 【关键点 4】ref 的 current 属性指向实际 DOM 节点。
  10. 【关键点 5】不可滥用 ref,应当优先使用声明式状态管理。
  11. 【易错点 1】在函数组件中不能直接在自定义组件上使用 ref 获取其内部 DOM,必须配合 forwardRef。
  12. 【易错点 2】ref 回调在组件更新时会先传入 null 再传入新节点,需处理空值情况。
  13. 【易错点 3】避免在渲染阶段读取或修改 ref 的 current 值,应放在副作用或事件回调中。