这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战
翻译自:beta.reactjs.org/learn/manip…
因为 React 已经根据 render 的输出处理了 DOM 结构,所以你的组件不经常需要操作 DOM。然而,有的时候你可能需要操作 React 管理的 DOM 元素,比如,将焦点放到一个节点上,滚动到这个节点,或者去计算它的宽和高。React 中没有内置的方法去做这些事情,所以你将会需要 ref 去指向这个 DOM 节点。
这个系列的文章你将会学到:
- 如何使用 ref 属性访问由 React 管理的 DOM 节点
- 如何将 JSX 的
ref
属性关联到useRef
钩子 - 如何访问其他组件的 DOM 节点
- 在哪种情况下,修改 React 管理的 DOM 是安全的
关于 ref 相关的介绍和例子,可以看我前面一个系列的文章 useRef 简单易懂解析
系列文章
如何使用 ref 操作 DOM?(一)使用 ref 访问 DOM 节点
获取节点的 ref
要访问 React 管理的 DOM 节点,首先,导入 useRef
钩子:
import { useRef } from 'react';
然后,使用它在组件中声明一个 ref:
const myRef = useRef(null);
最后,将它作为 ref 属性传递给 DOM 节点:
<div ref={myRef}>
useRef
这个 Hook返回一个对象,这个对象只有一个名为 current
的属性。myRef.current
的初始值是 null
。当 React 为这个 <div>
创建一个 DOM 节点时,React 会将这个节点的引用放到 myRef.current
中。然后可以从事件处理程序访问这个 DOM 节点,并使用它上面定义的内置浏览器 api。
// 你可以使用浏览器 API, 比如:
myRef.current.scrollIntoView();
myRef.current.focus();
本文介绍了如何使用 ref 访问 DOM 节点,后面将介绍一些实际例子和最佳实践,欢迎点赞和评论~