当前位置:首页 > React

react ref 如何使用

2026-01-24 02:56:28React

React Refs 的基本概念

Refs 提供了一种方式,允许直接访问 DOM 节点或在 React 组件中创建的实例。主要用于需要直接操作 DOM 或访问组件内部状态的场景,比如聚焦输入框、触发动画或集成第三方 DOM 库。

创建 Refs

使用 React.createRef()useRef Hook 创建 ref 对象。类组件使用 createRef,函数组件使用 useRef

react ref 如何使用

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

// 函数组件
function MyComponent() {
  const myRef = React.useRef(null);
}

绑定 Refs 到 DOM 元素

通过 ref 属性将 ref 对象绑定到具体的 DOM 元素或组件实例上。

// 绑定到 DOM 元素
<input ref={this.myRef} />  // 类组件
<input ref={myRef} />       // 函数组件

// 绑定到类组件实例
<ClassComponent ref={this.myRef} />

访问 Refs

通过 ref 对象的 current 属性访问绑定的 DOM 节点或组件实例。

react ref 如何使用

// 类组件中访问
componentDidMount() {
  this.myRef.current.focus(); // 聚焦输入框
}

// 函数组件中访问
React.useEffect(() => {
  myRef.current.focus();
}, []);

回调 Refs

另一种方式是使用回调函数形式的 ref,适用于动态绑定 ref 的场景。

<input ref={(node) => { this.inputRef = node; }} />

转发 Refs (Forwarding Refs)

通过 React.forwardRef 将 ref 传递给子组件,常用于封装高阶组件或库组件。

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

// 使用
const ref = React.useRef(null);
<FancyButton ref={ref}>Click Me</FancyButton>

注意事项

  • 避免过度使用 refs,优先通过 props 和状态管理数据流。
  • 函数组件无法直接绑定 ref(除非使用 forwardRef),因为函数组件没有实例。
  • componentDidMountuseEffect 中访问 ref,确保 DOM 已渲染完成。

分享给朋友:

相关文章

react性能如何

react性能如何

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

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

如何读react源码

如何读react源码

理解React源码的结构 React源码托管在GitHub上,主要分为几个核心模块:react、react-dom、react-reconciler等。react包包含核心API和组件逻辑,react…

react 如何传递props

react 如何传递props

传递 props 的基本方法 在 React 中,props 是从父组件向子组件传递数据的主要方式。通过在子组件的标签上添加属性,可以将数据传递给子组件。 父组件中传递 props: functi…

react如何取消监听

react如何取消监听

取消事件监听的方法 在React中取消事件监听通常涉及在组件卸载时移除之前添加的监听器。以下是几种常见场景的解决方案: 类组件中的取消监听 对于类组件,通常在componentDidMount中添加…

react如何引用图片

react如何引用图片

在React中引用图片的方法 使用import直接引入图片 在React组件中,可以通过import语句将图片作为模块引入。这种方式适合在组件内部使用图片,Webpack会处理图片的路径和打包。 i…