当前位置:首页 > React

react refs 如何使用

2026-02-11 20:20:08React

React Refs 的基本概念

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

创建 Refs

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

类组件示例:

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

// 类组件中
componentDidMount() {
  console.log(this.myRef.current); // 获取 DOM 节点
}

// 函数组件中
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} />;
}

转发 Refs(Forwarding Refs)

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

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

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

注意事项

  • 避免过度使用 refs,优先使用 React 的状态和属性机制。
  • 函数组件没有实例,因此 ref 不能直接指向函数组件(除非使用 forwardRef)。
  • useEffectcomponentDidMount 中访问 ref,确保 DOM 已渲染完成。

分享给朋友:

相关文章

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 在项目根目录的 package.json 文件中查看 dependencies 或 devDependencies 下的 react 和…

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…

如何下载react

如何下载react

下载 React 的方法 通过 npm 或 yarn 安装 React 可以通过包管理器 npm 或 yarn 安装。确保已安装 Node.js(包含 npm),然后在项目目录中运行以下命令:…

react如何遍历

react如何遍历

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

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 t…