当前位置:首页 > 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 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

如何提高react

如何提高react

优化性能 使用React.memo对组件进行记忆化处理,避免不必要的重新渲染。对于类组件,可以使用PureComponent来达到类似效果。 利用useMemo缓存计算结果,避免重复计算。对于函数或…

react项目如何

react项目如何

创建React项目 使用create-react-app工具快速初始化项目。确保已安装Node.js(建议版本≥12.0.0),运行以下命令生成新项目: npx create-react-app m…

react 如何操作cookie

react 如何操作cookie

安装依赖 在React项目中操作cookie通常需要第三方库的支持,推荐使用js-cookie。通过npm或yarn安装: npm install js-cookie # 或 yarn add js…