react如何获取dom节点
获取 DOM 节点的常用方法
在 React 中,可以通过 ref 来获取 DOM 节点。以下是几种常见的实现方式:
使用 useRef Hook(函数组件)
useRef 是 React Hooks 提供的一种方式,适用于函数组件。通过 useRef 创建的 ref 可以绑定到 DOM 元素上。

import React, { useRef, useEffect } from 'react';
function MyComponent() {
const divRef = useRef(null);
useEffect(() => {
console.log(divRef.current); // 输出 DOM 节点
}, []);
return <div ref={divRef}>Hello, World!</div>;
}
使用 createRef(类组件)
在类组件中,可以通过 React.createRef() 创建 ref,并将其绑定到 DOM 元素。

import React from 'react';
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.divRef = React.createRef();
}
componentDidMount() {
console.log(this.divRef.current); // 输出 DOM 节点
}
render() {
return <div ref={this.divRef}>Hello, World!</div>;
}
}
使用回调 Refs
回调 Refs 是一种更灵活的方式,通过传递一个函数来获取 DOM 节点。
import React, { useEffect } from 'react';
function MyComponent() {
let divRef = null;
useEffect(() => {
console.log(divRef); // 输出 DOM 节点
}, []);
return <div ref={node => divRef = node}>Hello, World!</div>;
}
注意事项
- 避免在渲染期间访问
ref.current,因为此时 DOM 可能尚未更新。 - 对于动态生成的元素,确保在
useEffect或componentDidMount中访问ref。 - 函数组件的回调 Refs 可能会在每次渲染时重新调用,但可以通过
useCallback优化。
示例:获取输入框的值
以下是一个获取输入框值的示例:
import React, { useRef } from 'react';
function InputExample() {
const inputRef = useRef(null);
const handleClick = () => {
alert(inputRef.current.value);
};
return (
<div>
<input ref={inputRef} type="text" />
<button onClick={handleClick}>Get Value</button>
</div>
);
}
通过这些方法,可以方便地在 React 中获取和操作 DOM 节点。






