当前位置:首页 > React

react ref如何使用

2026-03-31 08:07:13React

React Ref 的基本概念

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

创建 Ref

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

// 类组件中使用 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 节点或组件实例。

// 类组件中访问 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 传递给子组件,通常用于高阶组件或封装库。

react 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如何保养

保持组件简洁 将大型组件拆分为更小、更专注的组件,每个组件只负责单一功能。避免在单个组件中处理过多逻辑或状态,这有助于提高可维护性和可测试性。 合理使用状态管理 根据应用复杂度选择状态管理方案。简单…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Reac…

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

react如何减少伤病

react如何减少伤病

减少React应用中的性能问题(避免"伤病") 优化React应用性能需要从组件渲染、状态管理和外部依赖等多方面入手。以下是关键优化策略: 使用React.memo进行组件记忆 对函数组件使用Rea…

react如何重写alert

react如何重写alert

重写 React 中的 alert 方法 在 React 中,直接使用原生 alert 会破坏用户体验,通常需要自定义弹窗组件替代。以下是实现方法: 使用自定义弹窗组件 创建可复用的弹窗组件,替代原…

react如何获取光标

react如何获取光标

获取光标位置的方法 在React中获取光标位置通常涉及处理输入框或文本区域的onChange或onSelect事件。以下是几种常见的方法: 通过selectionStart和selectionEnd…