当前位置:首页 > 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 属性访问节点或组件实例:

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:

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 refs 如何使用

分享给朋友:

相关文章

react native如何启动

react native如何启动

React Native 启动步骤 确保已安装 Node.js(建议版本 14 或更高)和 npm/yarn。安装完成后,通过命令行工具执行以下操作。 初始化新项目 使用 React Native…

react如何收录

react如何收录

React 收录方法 React 的收录主要涉及搜索引擎优化(SEO)和预渲染技术。由于 React 是单页应用(SPA),默认情况下内容由 JavaScript 动态生成,可能导致搜索引擎爬虫难以收…

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全…

react如何拓展

react如何拓展

React 拓展方法 使用高阶组件(HOC) 高阶组件是一种复用组件逻辑的方式,通过接收一个组件并返回一个新组件实现功能拓展。例如,为组件添加日志功能: function withLoggin…

如何调试react

如何调试react

调试 React 应用的方法 使用 React Developer Tools 安装浏览器扩展(Chrome/Firefox),通过组件树查看组件状态、props 和 hooks。支持实时编辑 pro…

react如何重启

react如何重启

重启 React 应用的方法 重新加载当前页面 使用 window.location.reload() 强制刷新页面,这会重新加载整个应用并重置所有状态。 window.location.re…