当前位置:首页 > React

react如何获取真实dom

2026-03-10 22:49:07React

获取真实 DOM 的方法

在 React 中,通常推荐使用虚拟 DOM 进行渲染优化,但某些场景(如集成第三方库、测量元素尺寸等)需要直接访问真实 DOM。以下是几种常用方法:

使用 ref 属性

通过 createRefuseRef 创建引用,绑定到目标元素上,通过 current 属性访问真实 DOM。

类组件示例:

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

  componentDidMount() {
    console.log(this.myRef.current); // 输出真实 DOM 节点
  }

  render() {
    return <div ref={this.myRef}>目标元素</div>;
  }
}

函数组件示例:

function MyComponent() {
  const myRef = React.useRef(null);

  React.useEffect(() => {
    console.log(myRef.current); // 输出真实 DOM 节点
  }, []);

  return <div ref={myRef}>目标元素</div>;
}

回调形式的 ref

通过传递函数给 ref 属性,在回调中获取 DOM 节点。

function MyComponent() {
  const handleRef = (node) => {
    if (node) {
      console.log(node); // 输出真实 DOM 节点
    }
  };

  return <div ref={handleRef}>目标元素</div>;
}

通过 findDOMNode(不推荐)

React 提供了 ReactDOM.findDOMNode,但官方不推荐使用,因其可能破坏组件封装性。

import ReactDOM from 'react-dom';

class MyComponent extends React.Component {
  componentDidMount() {
    const node = ReactDOM.findDOMNode(this);
    console.log(node); // 输出组件根 DOM 节点
  }

  render() {
    return <div>目标元素</div>;
  }
}

动态多元素绑定

通过 ref 列表或 Map 结构管理多个 DOM 节点。

react如何获取真实dom

function MyList() {
  const items = ['A', 'B', 'C'];
  const refs = React.useRef(new Map());

  React.useEffect(() => {
    refs.current.forEach((node, key) => {
      console.log(key, node); // 输出每个节点的键和 DOM 对象
    });
  }, []);

  return (
    <ul>
      {items.map((item) => (
        <li
          key={item}
          ref={(node) => {
            if (node) refs.current.set(item, node);
            else refs.current.delete(item);
          }}
        >
          {item}
        </li>
      ))}
    </ul>
  );
}

注意事项

  • 避免在渲染阶段访问 ref.current,此时 DOM 可能未更新。
  • 函数组件中,useRef 的初始化值仅在首次渲染时生效。
  • 动态生成的 ref 需注意内存泄漏问题,及时清理无用引用。

标签: 真实react
分享给朋友:

相关文章

如何评价react native

如何评价react native

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

如何同步react

如何同步react

同步React组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…

react 如何跳转

react 如何跳转

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

react如何循环

react如何循环

循环渲染列表 在React中循环渲染列表通常使用map方法,这是最常用的方式。通过map可以将数组中的每个元素转换为React元素并渲染到页面上。 const items = ['Apple', '…

如何调试react

如何调试react

调试 React 应用的方法 使用 React Developer Tools 安装浏览器扩展(Chrome/Firefox),通过组件树查看组件状态、props 和 hooks。支持实时编辑 pro…

react如何启动

react如何启动

启动 React 项目的步骤 确保已安装 Node.js React 需要 Node.js 环境运行,建议安装最新稳定版(LTS)。可通过以下命令检查是否已安装: node -v npm -v…