当前位置:首页 > 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项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官方…

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以下…

react如何encode

react如何encode

React 中编码的实现方式 在 React 中,编码通常涉及对 URL、HTML 实体或特殊字符的处理。以下是几种常见的编码方法: 使用 encodeURIComponent 进行 URL 编码…

react如何清理

react如何清理

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

react native如何

react native如何

React Native 基础知识 React Native 是一个由 Facebook 开发的框架,用于使用 JavaScript 和 React 构建跨平台移动应用。它允许开发者编写一次代码,同时…

如何运行react项目

如何运行react项目

运行React项目的步骤 确保已安装Node.js(建议版本12或更高)和npm/yarn。若未安装,可从Node.js官网下载。 全局安装create-react-app脚手架工具(若已安装可跳过…