当前位置:首页 > React

react中如何拿到dom

2026-03-11 03:11:53React

使用 useRef Hook 获取 DOM 元素

在函数组件中,通过 useRef Hook 创建引用对象,并将其绑定到目标 DOM 元素的 ref 属性上。访问 ref.current 即可获取 DOM 实例。

import { useRef, useEffect } from 'react';

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

  useEffect(() => {
    console.log(divRef.current); // 输出 DOM 元素
  }, []);

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

类组件中使用 createRef

在类组件中,通过 React.createRef() 创建引用对象,并在渲染时将 ref 属性分配给目标元素。

react中如何拿到dom

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

  componentDidMount() {
    console.log(this.divRef.current); // 输出 DOM 元素
  }

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

回调 Refs 动态绑定

通过回调函数的方式动态绑定 ref,适用于需要灵活控制引用的场景。回调函数会在组件挂载或卸载时执行。

react中如何拿到dom

function MyComponent() {
  let divRef = null;

  const setDivRef = (element) => {
    divRef = element;
  };

  useEffect(() => {
    console.log(divRef); // 输出 DOM 元素
  }, []);

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

通过 findDOMNode 获取(不推荐)

ReactDOM.findDOMNode 可以获取组件的底层 DOM 节点,但官方已标记为过时,建议优先使用 ref

import { findDOMNode } from 'react-dom';

class MyComponent extends React.Component {
  componentDidMount() {
    const node = findDOMNode(this);
    console.log(node); // 输出根 DOM 元素
  }

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

转发 Refs 获取子组件 DOM

通过 React.forwardRef 将父组件的 ref 转发到子组件的特定 DOM 元素上。

const ChildComponent = React.forwardRef((props, ref) => {
  return <div ref={ref}>子组件元素</div>;
});

function ParentComponent() {
  const childRef = useRef(null);

  useEffect(() => {
    console.log(childRef.current); // 输出子组件的 DOM 元素
  }, []);

  return <ChildComponent ref={childRef} />;
}

注意事项

  • 避免在渲染期间直接操作 DOM,应在 useEffect 或生命周期方法中处理。
  • 函数组件的回调 Refs 可能因函数重新创建导致重复执行,建议用 useCallback 优化。
  • 转发 Refs 时需确保子组件正确接收并绑定 ref

标签: reactdom
分享给朋友:

相关文章

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

react如何运行

react如何运行

运行React项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官方…

react 如何debug

react 如何debug

React 调试方法 使用 React Developer Tools React Developer Tools 是浏览器扩展,支持 Chrome 和 Firefox。安装后,可以在开发者工具中查看…

react 如何循环

react 如何循环

循环渲染列表 在React中,循环渲染列表通常使用map方法。map可以遍历数组并返回一个新的React元素数组。 const items = ['Apple', 'Banana', 'Orange…

odyssey react 如何

odyssey react 如何

Odyssey React 是耐克推出的一款跑鞋系列,以其轻量化设计和React泡沫缓震技术著称。以下是关于该系列鞋款的主要特点和使用建议: 核心特点 React泡沫中底提供出色的能量回馈和缓震效果…

react如何减少伤病

react如何减少伤病

减少React应用中的性能问题(避免"伤病") 优化React应用性能需要从组件渲染、状态管理和外部依赖等多方面入手。以下是关键优化策略: 使用React.memo进行组件记忆 对函数组件使用Rea…