当前位置:首页 > React

react里如何通过ref获取dom

2026-01-26 00:29:25React

通过 ref 获取 DOM 元素

在 React 中,可以通过 useRef Hook 或 createRef 方法获取 DOM 元素的引用。以下是具体实现方式:

使用 useRef Hook(函数组件)

react里如何通过ref获取dom

import React, { useRef, useEffect } from 'react';

function MyComponent() {
  const divRef = useRef(null);

  useEffect(() => {
    console.log(divRef.current); // 获取 DOM 元素
    divRef.current.style.color = 'red'; // 操作 DOM
  }, []);

  return <div ref={divRef}>This is a DOM element</div>;
}

使用 createRef(类组件)

react里如何通过ref获取dom

import React, { Component, createRef } from 'react';

class MyComponent extends Component {
  constructor(props) {
    super(props);
    this.divRef = createRef();
  }

  componentDidMount() {
    console.log(this.divRef.current); // 获取 DOM 元素
    this.divRef.current.style.color = 'blue'; // 操作 DOM
  }

  render() {
    return <div ref={this.divRef}>This is a DOM element</div>;
  }
}

回调 ref 的用法

React 也支持通过回调函数的方式获取 ref:

function MyComponent() {
  let divRef = null;

  return (
    <div ref={(el) => { divRef = el; }}>
      {console.log(divRef)} // 在渲染后打印 DOM 元素
    </div>
  );
}

转发 ref 到子组件

如果需要获取子组件的 DOM 节点,可以使用 forwardRef

const ChildComponent = React.forwardRef((props, ref) => (
  <div ref={ref}>{props.children}</div>
));

function ParentComponent() {
  const childRef = useRef(null);

  useEffect(() => {
    console.log(childRef.current); // 子组件的 DOM 元素
  }, []);

  return <ChildComponent ref={childRef}>Child Content</ChildComponent>;
}

注意事项

  • Ref 的 current 属性在组件挂载后才会被赋值,初始值为 null
  • 避免过度使用 ref 直接操作 DOM,优先考虑 React 的状态驱动方式。
  • 函数组件每次渲染都会重新执行,因此回调 ref 可能会被调用两次(清空旧 ref 和设置新 ref)。

标签: reactref
分享给朋友:

相关文章

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

如何开发react

如何开发react

开发React应用的基本步骤 安装Node.js和npm 确保系统中已安装Node.js(包含npm)。可通过官网下载安装包,安装后验证版本: node -v npm -v 创建React项目…

react如何开发

react如何开发

React 开发基础步骤 安装 Node.js 和 npm/yarn 确保系统已安装 Node.js(包含 npm)或 Yarn。React 项目依赖这些工具管理包和运行脚本。官方推荐使用 Node.…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

如何提高react

如何提高react

优化性能 使用React.memo对组件进行记忆化处理,避免不必要的重新渲染。对于类组件,可以使用PureComponent来达到类似效果。 利用useMemo缓存计算结果,避免重复计算。对于函数或…

react如何下载

react如何下载

安装 React 的步骤 通过 npm 或 yarn 安装 React,确保已安装 Node.js(版本建议 ≥ 14.0.0)。打开终端或命令行工具,运行以下命令: npx create-reac…