React forwardRef 用法案例分析

 更新时间:2023年06月29日 11:13:34   作者:一颗不甘坠落的流星  
这篇文章主要介绍了React forwardRef用法,forwardRef允许你的组件使用ref将一个DOM节点暴露给父组件,本文结合案例分析给大家讲解的非常详细,需要的朋友可以参考下

React.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。这种技术并不常见,但在以下两种场景中特别有用:

  • 转发 refs 到 DOM 组件
  • 在高阶组件中转发 refs

本文重点介绍下React forwardRef 用法。

用法

forwardRef:允许你的组件使用 ref 将一个 DOM 节点暴露给父组件。

import { forwardRef } from 'react';
const MyInput = forwardRef((props, ref) => {
  // ...
});

案例分析:ref 属性是 React 的特殊属性,不能直接使用。

import {useRef} from 'react'
function InputCom({ref}) {
  return (
    <input type='text' ref={ref} />
  )
}
function App() {
  const inpRef = useRef(null)
  const focus = () => {
    inpRef.current?.focus()
  }
  return (
    <>
      <InputCom ref={inpRef} />
    </>
  )
}

上面就会弹出报错信息:

Warning: InputCom: `ref` is not a prop. Trying to access it will result in `undefined` being returned. 
If you need to access the same value Within the child component, you should pass it as a company's prop.
// 警告:InputCom: 'ref不是一个prop。试图访问它将导致返回undefine。如果你需要在子组件中访问相同的值,你应该把它作为公司的prop传递。

如果想传递 ref,这时候就要借助 forwardRef 函数

import { forwardRef, useRef } from "react";
const InputCom = forwardRef((props, ref) => {
  return <input type="text" ref={ref} />;
});
export default function ProRef() {
  const inpRef = useRef(null);
  const focus = () => {
    inpRef.current?.focus();
  };
  return (
    <>
      <InputCom ref={inpRef} />
      <button onClick={focus}>focus</button>
    </>
  );
}

到此这篇关于React forwardRef 用法的文章就介绍到这了,更多相关React forwardRef 用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React Native 脚手架的基本使用详解

    React Native 脚手架的基本使用详解

    这篇文章主要介绍了React Native 脚手架的基本使用详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • react将文件转为base64上传的示例代码

    react将文件转为base64上传的示例代码

    本文主要介绍了react将文件转为base64上传的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • React组件中按钮的loading状态失效问题的解决方案

    React组件中按钮的loading状态失效问题的解决方案

    在React开发过程中,我遇到这样的情况:页面按钮的loading属性失效,尽管通过useEffect打印发现loading状态(确实在true和false之间切换,但按钮却没有表现出预期的加载效果,所以本文给大家介绍了失效的解决方案,需要的朋友可以参考下
    2025-07-07
  • react无限滚动组件的实现示例

    react无限滚动组件的实现示例

    本文主要介绍了react无限滚动组件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • React state结构设计原则示例详解

    React state结构设计原则示例详解

    这篇文章主要为大家介绍了React state结构设计原则示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 使用Webpack打包React项目的流程步骤

    使用Webpack打包React项目的流程步骤

    随着React应用日益复杂,开发者需要借助模块打包工具来管理项目依赖、转换代码和优化性能,Webpack是一款功能强大的模块打包器,它可以将React项目中的JavaScript、CSS、图片等资源打包成浏览器友好的文件,本文将全面介绍如何使用Webpack打包React项目
    2025-03-03
  • React hooks useState异步问题及解决

    React hooks useState异步问题及解决

    这篇文章主要介绍了React hooks useState异步问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • React子组件调用父组件方法获取的数据不是最新值的解决方法

    React子组件调用父组件方法获取的数据不是最新值的解决方法

    这篇文章主要介绍了React子组件调用父组件方法获取的数据不是最新值的解决方法,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-09-09
  • react中实现修改input的defaultValue

    react中实现修改input的defaultValue

    这篇文章主要介绍了react中实现修改input的defaultValue方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • React 中 map 处理异步数据不渲染的问题及解决方法

    React 中 map 处理异步数据不渲染的问题及解决方法

    文章讲述了在使用React时遇到的异步问题导致页面卡顿的情况,通过Promise.all等方法解决了异步操作的顺序问题,使得页面能够正常渲染,感兴趣的朋友跟随小编一起看看吧
    2026-01-01

最新评论