当前位置:首页 > React

react ref 如何使用

2026-03-31 10:18:26React

React Refs 的基本概念

Refs 是 React 提供的一种访问 DOM 节点或 React 组件实例的方式。通常在 React 的数据流中,父子组件通过 props 进行通信,但在某些情况下需要直接操作 DOM 或组件实例,这时可以使用 Refs。

创建 Refs

使用 React.createRef() 可以创建一个 Ref 对象。通常在组件的构造函数中创建 Ref,并将其赋值给实例属性,以便在整个组件中访问。

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

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

访问 Refs

通过 Ref 对象的 current 属性可以访问到绑定的 DOM 节点或组件实例。例如,在组件挂载后,可以通过 this.myRef.current 访问到对应的 DOM 节点。

componentDidMount() {
  console.log(this.myRef.current); // 输出绑定的 DOM 节点
}

回调 Refs

除了 React.createRef(),还可以使用回调 Refs。回调 Refs 是一个函数,接收 DOM 节点或组件实例作为参数,可以更灵活地控制 Refs 的赋值。

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

  componentDidMount() {
    console.log(this.myRef); // 输出绑定的 DOM 节点
  }

  render() {
    return <div ref={this.setRef} />;
  }
}

函数组件中的 Refs

在函数组件中,可以使用 useRef Hook 来创建 Refs。useRef 返回一个可变的 Ref 对象,其 current 属性被初始化为传入的参数。

import React, { useRef, useEffect } from 'react';

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

  useEffect(() => {
    console.log(myRef.current); // 输出绑定的 DOM 节点
  }, []);

  return <div ref={myRef} />;
}

Refs 与 forwardRef

如果需要将 Ref 传递给子组件,可以使用 React.forwardRefforwardRef 接收一个渲染函数,该函数的第二个参数即为传递的 Ref。

const ChildComponent = React.forwardRef((props, ref) => {
  return <div ref={ref}>{props.children}</div>;
});

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

  componentDidMount() {
    console.log(this.childRef.current); // 输出子组件的 DOM 节点
  }

  render() {
    return <ChildComponent ref={this.childRef}>Hello</ChildComponent>;
  }
}

使用场景

Refs 的常见使用场景包括:

react ref 如何使用

  • 管理焦点、文本选择或媒体播放。
  • 触发强制动画。
  • 集成第三方 DOM 库。

注意事项

  • 避免过度使用 Refs,优先考虑 React 的数据流。
  • 不要在函数组件上使用 ref 属性,因为它们没有实例。
  • 在函数组件中使用 useRef 时,确保在渲染期间不要修改 current 属性。

分享给朋友:

相关文章

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…

react如何开发

react如何开发

React 开发基础步骤 安装 Node.js 和 npm/yarn 确保系统已安装 Node.js(包含 npm)或 Yarn。React 项目依赖这些工具管理包和运行脚本。官方推荐使用 Node.…

react项目如何

react项目如何

创建React项目 使用create-react-app工具快速初始化项目。确保已安装Node.js(建议版本≥12.0.0),运行以下命令生成新项目: npx create-react-app m…

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…

react 如何算精通

react 如何算精通

精通 React 的标准 精通 React 不仅需要掌握基础语法和核心概念,还需具备解决复杂问题、优化性能和架构设计的能力。以下是衡量 React 精通程度的关键维度: 核心概念与机制 组件化开…

如何编译react文件

如何编译react文件

编译 React 文件的方法 使用 Create React App (CRA) Create React App 是官方推荐的快速搭建 React 项目的工具,内置了 Babel 和 Webpack…