当前位置:首页 > React

react refs 如何使用

2026-02-26 06:21:14React

React Refs 的基本概念

Refs 提供了一种直接访问 DOM 节点或 React 组件实例的方式。通常用于处理焦点、媒体播放、动画或与第三方 DOM 库集成。

创建 Refs

使用 React.createRef() 创建 ref,并将其附加到 React 元素的 ref 属性。ref 的值根据节点的类型而有所不同:

  • HTML 元素:ref 接收底层 DOM 元素。
  • 类组件:ref 接收组件的挂载实例。
  • 函数组件:默认不支持 ref,需使用 forwardRef 或将其转换为类组件。
class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.myRef = React.createRef();
  }

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

访问 Refs

通过 ref 的 current 属性访问节点或组件实例:

react refs 如何使用

componentDidMount() {
  const node = this.myRef.current;
  // 对 DOM 节点或组件实例进行操作
}

回调 Refs

另一种方式是使用回调函数而非 createRef()。回调接收 DOM 元素或组件实例作为参数:

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

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

Refs 与函数组件

函数组件默认不支持 ref,需使用 React.forwardRef 转发 ref:

react refs 如何使用

const FancyButton = React.forwardRef((props, ref) => (
  <button ref={ref} className="fancy-button">
    {props.children}
  </button>
));

// 使用 ref
const ref = React.createRef();
<FancyButton ref={ref}>Click me</FancyButton>;

使用场景示例

  1. 聚焦输入框
    
    class AutoFocusInput extends React.Component {
    inputRef = React.createRef();

componentDidMount() { this.inputRef.current.focus(); }

render() { return ; } }


2. 控制视频播放:
```jsx
class VideoPlayer extends React.Component {
  videoRef = React.createRef();

  handlePlay = () => {
    this.videoRef.current.play();
  };

  render() {
    return (
      <div>
        <video ref={this.videoRef} src="video.mp4" />
        <button onClick={this.handlePlay}>Play</button>
      </div>
    );
  }
}

注意事项

  • 避免过度使用 refs,优先考虑 React 的数据流(如 props 和 state)。
  • 不要在渲染期间访问 ref.current,因为此时 ref 可能尚未更新。
  • 函数组件需结合 useRef Hook 或 forwardRef 使用 refs。

分享给朋友:

相关文章

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impor…

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

react如何清理

react如何清理

清理 React 项目的方法 清理未使用的依赖项 运行 npm prune 或 yarn install --production 可以移除 node_modules 中未在 package.json…

react如何重新加载

react如何重新加载

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

如何设计react组件

如何设计react组件

设计 React 组件的核心原则 React 组件的设计需要遵循高内聚、低耦合的原则,确保组件功能独立且易于维护。组件的设计可以分为展示组件和容器组件两类,展示组件负责 UI 渲染,容器组件负责逻辑处…