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

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react 如何执行

react 如何执行

安装 Node.js 和 npm React 开发需要 Node.js 环境,因为它提供了 npm(或 yarn)包管理工具。从 Node.js 官网 下载并安装最新 LTS 版本。安装完成后,在终端…

如何手写一个react

如何手写一个react

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

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何发音

react如何发音

React的发音 React的正确发音为 /riˈækt/,类似于“ree-akt”。以下是详细说明: 发音分解 第一个音节“Ree”发音类似英文单词“see”中的“ee”音。 第二个音节…

react 如何跳转

react 如何跳转

使用 React Router 进行页面跳转 React 应用中通常使用 react-router-dom 库实现页面跳转。以下是几种常见的跳转方式: 安装依赖 npm install react…