请阐述 React 中 refs 的用途,并列举其典型的使用场景。
考察说明
考查对 React refs 机制的理解及其在实践中的应用。
回答思路
- 【回答框架 1】refs 是 React 提供的用于访问 DOM 节点或组件实例的机制,其核心价值是绕开常规的 props 数据流,在必要时直接操作底层元素或组件方法。
- 【回答框架 2】主要应用场景包括:管理焦点、文本选择或媒体播放,触发强制动画,集成第三方 DOM 库,以及获取组件实例以调用其内部方法。
- 【回答框架 3】现代 React 主要使用 useRef 创建 ref 对象,并通过 ref 属性挂载到元素或组件上;旧版本也支持回调 ref 和 string ref(后者已不推荐)。
- 【回答框架 4】使用 refs 时需注意:避免过度依赖 refs 进行声明式 UI 可处理的交互,因为 React 提倡数据驱动视图,而 refs 更适合命令式操作。
- 【关键点 1】refs 用于访问 DOM 节点或组件实例,是命令式操作的通道。
- 【关键点 2】常见场景:管理焦点、媒体控制、集成第三方库、触发动画。
- 【关键点 3】在函数组件中优先使用 useRef,类组件可使用 createRef 或回调 ref。
- 【关键点 4】应避免用 refs 代替声明式状态管理。
- 【易错点 1】不要将 refs 用于频繁的 DOM 操作,以免破坏 React 的渲染性能优化。
- 【易错点 2】函数组件默认不能通过 ref 获取到实例,除非使用 forwardRef 结合 useImperativeHandle。