当前位置:首页 > React

react 如何获取dom

2026-01-14 10:00:10React

获取 DOM 的方法

在 React 中,可以通过 useRefcreateRef 来获取 DOM 节点。useRef 是函数组件中常用的方法,而 createRef 通常用于类组件。

使用 useRef 获取 DOM

在函数组件中,可以通过 useRef Hook 创建一个 ref,并将其附加到目标 DOM 元素上。

react 如何获取dom

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

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

  useEffect(() => {
    if (divRef.current) {
      console.log('DOM element:', divRef.current);
    }
  }, []);

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

使用 createRef 获取 DOM

在类组件中,可以通过 createRef 方法创建 ref,并将其绑定到目标元素上。

react 如何获取dom

import React, { createRef } from 'react';

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

  componentDidMount() {
    if (this.divRef.current) {
      console.log('DOM element:', this.divRef.current);
    }
  }

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

回调 ref 的方式

除了 useRefcreateRef,还可以通过回调函数的方式获取 DOM 节点。这种方式在 React 早期版本中较为常见。

import React, { useEffect } from 'react';

function MyComponent() {
  let divRef = null;

  useEffect(() => {
    if (divRef) {
      console.log('DOM element:', divRef);
    }
  }, []);

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

动态绑定多个 ref

如果需要动态绑定多个 DOM 节点,可以通过 useRef 结合回调函数或数组的方式实现。

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

function MyComponent() {
  const refs = useRef([]);

  useEffect(() => {
    refs.current.forEach((ref) => {
      if (ref) {
        console.log('DOM element:', ref);
      }
    });
  }, []);

  return (
    <div>
      {[1, 2, 3].map((item, index) => (
        <div
          key={item}
          ref={(el) => (refs.current[index] = el)}
        >
          Item {item}
        </div>
      ))}
    </div>
  );
}

注意事项

  • 避免在渲染过程中直接操作 DOM,尽量通过 React 的状态和属性来控制界面。
  • useRef 创建的 ref 对象在组件的整个生命周期内保持不变,不会因重新渲染而改变。
  • 回调 ref 的方式在每次渲染时会被调用两次(一次传入 null,一次传入 DOM 元素),但通常不会影响功能。

标签: reactdom
分享给朋友:

相关文章

如何删除react

如何删除react

卸载 React 项目依赖 打开项目根目录下的 package.json 文件,删除所有包含 react、react-dom 或其他 React 相关库的依赖项。保存文件后运行以下命令: npm u…

react native 如何

react native 如何

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

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impor…

如何手写一个react

如何手写一个react

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

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…