当前位置:首页 > React

react refs如何使用

2026-01-16 09:09:28React

React Refs 的基本概念

Refs 提供了一种直接访问 DOM 节点或 React 组件实例的方式。通常在需要直接操作 DOM 或访问组件方法时使用。

创建 Refs

使用 React.createRef() 创建 ref 对象,通常在构造函数中完成:

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

绑定 Refs

通过 ref 属性将 ref 附加到 React 元素上:

react refs如何使用

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

访问 Refs

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

componentDidMount() {
  const node = this.myRef.current;
  // 操作 DOM 节点
}

函数组件中的 Refs

使用 useRef Hook 在函数组件中创建 ref:

react refs如何使用

function MyFunctionComponent() {
  const myRef = React.useRef(null);

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

回调 Refs

另一种设置 refs 的方式,通过传递函数而不是 ref 对象:

setTextInputRef = (element) => {
  this.textInput = element;
}

render() {
  return <input ref={this.setTextInputRef} />;
}

转发 Refs

使用 React.forwardRef 将 ref 自动传递到子组件:

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

// 父组件可以获取到 button 的 ref
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;

使用场景

  • 管理焦点、文本选择或媒体播放
  • 触发强制动画
  • 集成第三方 DOM 库
  • 访问子组件的方法

注意事项

  • 避免过度使用 refs,优先考虑状态提升和 props
  • 不能在函数组件上使用 ref 属性,除非使用 forwardRef
  • ref 会在 componentDidMount 或 componentDidUpdate 之前更新

分享给朋友:

相关文章

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一致…

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以…

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。 c…