当前位置:首页 > 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 元素或类组件实例。

// 类组件
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。

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

分享给朋友:

相关文章

如何用react

如何用react

使用React的基本步骤 安装Node.js和npm 确保系统已安装Node.js和npm。Node.js自带npm,可从官网下载安装包。安装完成后,通过命令行验证版本: node -v npm -…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

react如何清理

react如何清理

清理 React 项目的方法 清理未使用的依赖项 运行 npm prune 或 yarn install --production 可以移除 node_modules 中未在 package.json…

odyssey react 如何

odyssey react 如何

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

react 如何修改state

react 如何修改state

修改 state 的基础方法 在 React 中,state 的修改必须通过 setState 方法(类组件)或 state 更新函数(函数组件)。直接修改 state 会导致组件不会重新渲染,且可能…

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…