返回

掌握 React createRef,轻松拿捏真实 DOM

前端

React createRef 简介

在 React 中,我们编写的 JSX 代码都是虚拟 DOM,它还没有生成真实的 DOM。因此,如果我们需要访问真实 DOM 元素,就需要用到 createRef 这个 API。createRef 返回一个可变的 ref 对象,该对象包含对真实 DOM 元素或 React 元素的引用。

使用 createRef 的步骤

  1. 创建 ref 对象

首先,我们需要创建一个 ref 对象。这可以通过两种方式实现:

  • 使用 createRef() 函数:const ref = createRef();
  • 使用 React.createRef()const ref = React.createRef();
  1. 将 ref 对象附加到元素

接下来,我们需要将 ref 对象附加到要引用的元素。这可以通过两种方式实现:

  • 使用 ref 属性:<input ref={ref} />
  • 使用 forwardRef 高阶组件:const MyComponent = forwardRef((props, ref) => { return <input ref={ref} />; });
  1. 访问 ref 对象

最后,我们可以通过 ref 对象来访问真实 DOM 元素或 React 元素。这可以通过两种方式实现:

  • 使用 current 属性:console.log(ref.current);
  • 使用 callback 函数:const MyComponent = forwardRef((props, ref) => { return <input ref={ref} onChange={(e) => { console.log(e.target.value); }} />; });

createRef 的使用场景

createRef 有许多使用场景,包括:

  • 访问 DOM 元素:我们可以使用 createRef 来访问 DOM 元素,以便对其进行操作或获取其属性。
  • 测量元素尺寸:我们可以使用 createRef 来测量元素的尺寸,以便在布局或动画中使用。
  • 滚动到指定位置:我们可以使用 createRef 来滚动到指定位置,以便在页面中导航。
  • 集成第三方库:我们可以使用 createRef 来集成第三方库,以便在 React 中使用它们的 API。

createRef 的最佳实践

在使用 createRef 时,我们需要注意以下几点:

  • 避免滥用:不要过度使用 createRef,以免导致性能问题。
  • 使用回调函数:在大多数情况下,使用回调函数来访问 ref 对象是更好的选择。
  • 确保 ref 对象是可变的:createRef 返回的可变的 ref 对象,因此在使用时要确保它是可变的。

总结

createRef 是一个强大的 API,它允许我们直接访问真实 DOM 元素或 React 元素。通过熟练掌握 createRef,我们可以轻松驾驭真实 DOM,提升我们的 React 开发技能。