当前位置:首页 > React

react refs 如何使用

2026-03-30 23:22:12React

React Refs 的基本概念

Refs 提供了一种直接访问 DOM 节点或 React 组件实例的方式。通常用于需要直接操作 DOM 的场景,例如焦点管理、动画触发或第三方库集成。

创建 Refs

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

类组件示例:

react refs 如何使用

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.myRef = React.createRef();
  }
  render() {
    return <div ref={this.myRef} />;
  }
}

函数组件示例:

function MyComponent() {
  const myRef = React.useRef(null);
  return <div ref={myRef} />;
}

访问 Refs

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

react refs 如何使用

function FocusInput() {
  const inputRef = React.useRef(null);

  const handleClick = () => {
    inputRef.current.focus();
  };

  return (
    <>
      <input ref={inputRef} />
      <button onClick={handleClick}>Focus Input</button>
    </>
  );
}

Refs 与回调 Refs

回调 Refs 是一种更灵活的方式,允许在 ref 附加或分离时执行自定义逻辑。

function CallbackRefExample() {
  const setTextInputRef = (element) => {
    if (element) {
      element.focus();
    }
  };

  return <input ref={setTextInputRef} />;
}

转发 Refs

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

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

function App() {
  const ref = React.useRef(null);
  return <FancyButton ref={ref}>Click Me</FancyButton>;
}

注意事项

  • 避免过度使用 refs,优先考虑 React 的状态和 props 控制。
  • 不要在函数组件中使用 createRef,每次渲染会创建新的 ref 对象。
  • 回调 refs 在组件更新时可能被调用两次(首次传入 null,之后传入 DOM 元素)。

分享给朋友:

相关文章

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…

odyssey react 如何

odyssey react 如何

Odyssey React 是耐克推出的一款跑鞋系列,以其轻量化设计和React泡沫缓震技术著称。以下是关于该系列鞋款的主要特点和使用建议: 核心特点 React泡沫中底提供出色的能量回馈和缓震效果…

react如何滚动scroll

react如何滚动scroll

React 实现滚动的方法 使用 useRef 和 scrollTo 方法 通过 useRef 获取 DOM 元素的引用,调用 scrollTo 方法实现滚动。 import React, { us…

react如何检测窗口

react如何检测窗口

监听窗口大小变化 使用useEffect钩子和resize事件监听窗口尺寸变化。在组件挂载时添加事件监听器,卸载时移除监听器以避免内存泄漏。 import { useState, useEffect…

react如何引入jq

react如何引入jq

在React中引入jQuery的方法 React和jQuery可以共存,但需要注意避免直接操作DOM,因为React有自己的虚拟DOM机制。以下是几种引入jQuery的方式: 通过npm安装jQue…

react如何启动6

react如何启动6

安装 Node.js 和 npm/yarn 确保系统中已安装 Node.js(建议版本 16 或更高)和 npm/yarn。可通过以下命令验证版本: node -v npm -v 创建 Reac…