当前位置:首页 > 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 启动步骤 确保已安装 Node.js(建议版本 14 或更高)和 npm/yarn。安装完成后,通过命令行工具执行以下操作。 初始化新项目 使用 React Native…

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment 包。确保项目中已安装 moment.js,因为 react-moment 依赖它。 npm install…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 在项目根目录的 package.json 文件中查看 dependencies 或 devDependencies 下的 react 和…

react如何保养

react如何保养

保持组件简洁 将大型组件拆分为更小、更专注的组件,每个组件只负责单一功能。避免在单个组件中处理过多逻辑或状态,这有助于提高可维护性和可测试性。 合理使用状态管理 根据应用复杂度选择状态管理方案。简…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 编写组件代码 在…

react如何测试

react如何测试

React 测试方法 React 应用的测试通常涉及组件测试、集成测试和端到端测试。以下是常用的测试工具和方法: Jest Jest 是 Facebook 开发的 JavaScript 测试框架,…