当前位置:首页 > 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 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

如何提高react

如何提高react

优化性能 使用React.memo对组件进行记忆化处理,避免不必要的重新渲染。对于类组件,可以使用PureComponent来达到类似效果。 利用useMemo缓存计算结果,避免重复计算。对于函数或…

react路由如何刷新

react路由如何刷新

React 路由刷新方法 在 React 中,路由刷新通常涉及以下几种场景和解决方案: 强制重新加载当前页面 使用 window.location.reload() 可以强制刷新整个页面,但会丢失…

react如何传递参数

react如何传递参数

传递 props 给子组件 在父组件中通过属性名直接传递数据,子组件通过 props 对象接收。例如父组件传递 name 和 age: <ChildComponent name="John"…

如何学react native

如何学react native

学习React Native的路径 掌握JavaScript和React基础知识是学习React Native的前提。熟悉ES6+语法、组件生命周期、状态管理和Hooks等概念能够帮助更快上手Reac…

react 如何使用 apply

react 如何使用 apply

使用 apply 方法的基本概念 在 JavaScript 中,apply 是函数原型上的方法,用于调用函数时指定 this 的值和传递参数数组。React 中可以使用 apply 来绑定组件方法或调…