当前位置:首页 > React

react ref如何使用

2026-03-31 08:07:13React

React Ref 的基本概念

Ref(引用)是 React 中用于直接访问 DOM 节点或 React 组件实例的一种机制。通常用于需要直接操作 DOM 或保存可变值而不触发重新渲染的场景。

创建 Ref

使用 React.createRef()useRef Hook 创建 Ref。createRef 适用于类组件,useRef 适用于函数组件。

react ref如何使用

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

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

绑定 Ref 到 DOM 元素

通过 ref 属性将 Ref 绑定到 DOM 元素或类组件实例。

// 类组件中绑定 Ref
class MyComponent extends React.Component {
  render() {
    return <div ref={this.myRef}>Hello</div>;
  }
}

// 函数组件中绑定 Ref
function MyComponent() {
  return <div ref={myRef}>Hello</div>;
}

访问 Ref 的值

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

react ref如何使用

// 类组件中访问 Ref
componentDidMount() {
  console.log(this.myRef.current); // 输出 DOM 节点
}

// 函数组件中访问 Ref
React.useEffect(() => {
  console.log(myRef.current); // 输出 DOM 节点
}, []);

回调 Refs

另一种方式是使用回调函数绑定 Ref,适用于需要动态设置 Ref 的场景。

function MyComponent() {
  const setRef = (node) => {
    if (node) {
      console.log(node); // 输出 DOM 节点
    }
  };

  return <div ref={setRef}>Hello</div>;
}

转发 Refs

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

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

function App() {
  const buttonRef = React.useRef(null);

  React.useEffect(() => {
    console.log(buttonRef.current); // 输出 button DOM 节点
  }, []);

  return <FancyButton ref={buttonRef}>Click me</FancyButton>;
}

Ref 的常见用途

  • 直接操作 DOM(聚焦、滚动、动画等)。
  • 访问第三方库需要的 DOM 节点。
  • 保存可变值而不触发重新渲染(类似实例变量)。

注意事项

  • 避免过度使用 Ref,优先使用 React 的状态和数据流。
  • 不能在函数组件上直接绑定 Ref,除非使用 forwardRef
  • Ref 的更新不会触发组件重新渲染。

分享给朋友:

相关文章

react 如何执行

react 如何执行

安装 Node.js 和 npm React 开发需要 Node.js 环境,因为它提供了 npm(或 yarn)包管理工具。从 Node.js 官网 下载并安装最新 LTS 版本。安装完成后,在终端…

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

理解如何react

理解如何react

理解React的核心概念 React是一个用于构建用户界面的JavaScript库,专注于通过组件化开发提高代码的可维护性和复用性。其核心思想包括虚拟DOM(Virtual DOM)和单向数据流,能够…

react如何安装

react如何安装

安装React的步骤 确保已安装Node.js(建议版本12或更高),可通过以下命令检查版本: node -v npm -v 使用Create React App快速搭建项目(推荐): npx c…

react如何分

react如何分

React 分页实现方法 在 React 中实现分页功能可以通过多种方式完成,以下是几种常见的方法: 使用状态管理分页数据 在组件内部维护当前页码和每页数据量的状态,通过计算切片数据实现分页。…