当前位置:首页 > React

react ref 如何使用

2026-02-26 16:51:29React

React Ref 的基本概念

Ref 是 React 提供的一种直接访问 DOM 节点或 React 组件实例的方式。通常用于处理表单焦点、动画触发或与第三方 DOM 库集成等场景。

创建 Ref

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

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

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

绑定 Ref 到 DOM 元素

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

react ref 如何使用

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

// 函数组件
return <div ref={myRef}>Content</div>;

访问 Ref 的值

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

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

// 函数组件
React.useEffect(() => {
  console.log(myRef.current); // 获取 DOM 节点
}, []);

Ref 与函数组件

默认情况下,函数组件不能直接绑定 Ref,需要使用 forwardRef 转发 Ref。

react ref 如何使用

const FunctionComponent = React.forwardRef((props, ref) => {
  return <div ref={ref}>Forwarded Ref</div>;
});

// 使用
function Parent() {
  const ref = React.useRef(null);
  return <FunctionComponent ref={ref} />;
}

回调 Ref

通过回调函数的形式绑定 Ref,适用于动态绑定或 Ref 变化时执行逻辑的场景。

function CallbackRefExample() {
  const [ref, setRef] = React.useState(null);

  const handleRefChange = (node) => {
    setRef(node);
    if (node) {
      console.log("Ref updated:", node);
    }
  };

  return <div ref={handleRefChange}>Callback Ref</div>;
}

Ref 的最佳实践

避免过度使用 Ref,优先使用 React 的状态和 props 管理 UI。Ref 适用于必须直接操作 DOM 或组件实例的场景,如聚焦输入框或触发动画。

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

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

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

Ref 的注意事项

Ref 的值在组件挂载后才会更新,不要在渲染阶段直接依赖 ref.current。函数组件的 Ref 会在每次渲染时保持稳定,但类组件的 Ref 可能会在更新时重新创建。

分享给朋友:

相关文章

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react如何取消渲染

react如何取消渲染

取消渲染的方法 在React中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元运…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。 /…

react如何启动

react如何启动

启动 React 项目的步骤 确保已安装 Node.js React 需要 Node.js 环境运行,建议安装最新稳定版(LTS)。可通过以下命令检查是否已安装: node -v npm -v…

react如何减少setState

react如何减少setState

减少 React 中 setState 调用的方法 合并多次状态更新 使用函数式更新方式合并多次 setState 调用。React 会将多次状态更新批量处理,避免不必要的重新渲染。 // 非函…