当前位置:首页 > 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 native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

react如何验证

react如何验证

表单验证方法 在React中验证表单数据通常使用以下几种方式: 内置HTML5验证 利用HTML5原生表单验证属性如required、pattern等,结合form.noValidate属性禁用浏览…

理解如何react

理解如何react

理解React的核心概念 React是一个用于构建用户界面的JavaScript库,专注于通过组件化开发提高代码的可维护性和复用性。其核心思想包括虚拟DOM(Virtual DOM)和单向数据流,能够…

react如何清理

react如何清理

清理 React 项目的方法 清理未使用的依赖项 运行 npm prune 或 yarn install --production 可以移除 node_modules 中未在 package.json…

react如何调度

react如何调度

React 调度机制概述 React 的调度机制通过 Fiber 架构 和 Scheduler 模块实现任务优先级管理与时间切片(Time Slicing),确保高优先级更新(如用户交互)能快速响应,…

react如何减少setState

react如何减少setState

减少 React 中 setState 调用的方法 合并多次状态更新 使用函数式更新方式合并多次 setState 调用。React 会将多次状态更新批量处理,避免不必要的重新渲染。 // 非函…