当前位置:首页 > 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 属性分配给目标元素。

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,适用于需要灵活控制引用的场景。回调函数会在组件挂载或卸载时执行。

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 元素上。

react中如何拿到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中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元运…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

react如何迭代

react如何迭代

在 React 中迭代数组或对象 React 提供了多种方式来处理数组或对象的迭代,以下是常见的方法: 使用 map 方法迭代数组 map 是 JavaScript 数组的内置方法,常用于在 Rea…

react 如何debug

react 如何debug

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

react如何调度

react如何调度

React 调度机制概述 React 的调度机制通过 Fiber 架构 和 Scheduler 模块实现任务优先级管理与时间切片(Time Slicing),确保高优先级更新(如用户交互)能快速响应,…

react 如何获取dom

react 如何获取dom

获取 DOM 的方法 在 React 中,可以通过 useRef 或 createRef 来获取 DOM 节点。useRef 是函数组件中常用的方法,而 createRef 通常用于类组件。 使用…