当前位置:首页 > React

react如何引用传递

2026-03-30 22:18:00React

React 引用传递的方法

使用 React.forwardRef

React.forwardRef 允许组件接收 ref 并向下传递到子组件。

const Child = React.forwardRef((props, ref) => (
  <button ref={ref}>{props.children}</button>
));

function Parent() {
  const buttonRef = React.useRef();
  return <Child ref={buttonRef}>Click</Child>;
}

通过 Props 传递引用

ref 作为普通 prop 传递,适用于非 DOM 组件。

react如何引用传递

function Child({ innerRef }) {
  return <div ref={innerRef}>Content</div>;
}

function Parent() {
  const divRef = React.useRef();
  return <Child innerRef={divRef} />;
}

使用 useImperativeHandle

配合 forwardRef 暴露子组件的特定方法或值。

react如何引用传递

const Child = React.forwardRef((props, ref) => {
  const inputRef = React.useRef();
  React.useImperativeHandle(ref, () => ({
    focus: () => inputRef.current.focus()
  }));
  return <input ref={inputRef} />;
});

function Parent() {
  const childRef = React.useRef();
  return (
    <>
      <Child ref={childRef} />
      <button onClick={() => childRef.current.focus()}>Focus</button>
    </>
  );
}

Context 传递引用

通过 Context 跨层级传递 ref,适合深层嵌套组件。

const RefContext = React.createContext();

function Parent() {
  const ref = React.useRef();
  return (
    <RefContext.Provider value={ref}>
      <Child />
    </RefContext.Provider>
  );
}

function Child() {
  const ref = React.useContext(RefContext);
  return <div ref={ref}>Content</div>;
}

回调 Refs

通过回调函数的形式获取子组件的引用。

function Child({ inputRef }) {
  return <input ref={inputRef} />;
}

function Parent() {
  let inputElement;
  return (
    <Child inputRef={el => (inputElement = el)} />
  );
}

注意事项

  • 避免滥用 ref,优先使用 React 的数据流(如 props 和状态管理)。
  • forwardRef 仅能用于函数组件或 memo 组件。
  • 直接操作 DOM 可能破坏 React 的虚拟 DOM 一致性,需谨慎使用。

标签: react
分享给朋友:

相关文章

react如何迭代

react如何迭代

在 React 中迭代数组或对象 React 提供了多种方式来处理数组或对象的迭代,以下是常见的方法: 使用 map 方法迭代数组 map 是 JavaScript 数组的内置方法,常用于在 Rea…

react如何打包

react如何打包

打包 React 项目的基本步骤 React 项目通常使用 create-react-app 或类似的脚手架工具创建,这些工具内置了打包功能。以下是打包 React 项目的详细方法: 安装依赖并构建…

react如何重置

react如何重置

重置 React 应用的状态 使用 useState 钩子重新初始化状态变量是最直接的方法。将状态变量重置为初始值或空值即可完成重置。 const [count, setCount] = useSt…

如何调试react

如何调试react

调试 React 应用的方法 使用 React Developer Tools 安装浏览器扩展(Chrome/Firefox),通过组件树查看组件状态、props 和 hooks。支持实时编辑 pro…

如何恢复react

如何恢复react

恢复 React 项目的方法 检查并修复依赖项 运行 npm install 或 yarn install 重新安装所有依赖项。如果依赖项损坏或缺失,这将恢复项目所需的库和工具。 恢复删除的文件 如…

react如何减少setState

react如何减少setState

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