React 开发工具中组件的forwardRef 是什么意思以及如何使用它?

2024-01-04

当我在 React 开发工具中检查组件结构时,我可以看到有一个forwardRef标记。我很困惑,因为源代码中没有使用它的迹象。它是怎么存在的以及我该如何使用它?


The forwardRef调用不在您自己的代码中,它们在您正在使用的包中。

styled.button似乎来自styled-components。这个包使用forwardRef转发任何ref您在样式化按钮组件上设置的底层button成分。你可以在他们的源代码中看到它就在这儿 https://github.com/styled-components/styled-components/blob/404190e26062133a7b916d73c1d52312db20bc92/packages/styled-components/src/models/StyledComponent.js#L252:

WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);

的用法forwardRef从 styled-components v4 开始——参见步骤 #2本迁移指南 https://styled-components.com/docs/faqs#what-do-i-need-to-do-to-migrate-to-v4:

确保您的应用程序使用的是 React >= 16.3;在内部我们正在使用新的React.forwardRefAPI 和新的上下文 API(如果您想尝试使用 polyfill 来支持较旧的 React 版本)

对此也有说明提示和技巧页面 https://github.com/styled-components/styled-components/blob/72a6f642c3dedbcee91a2b5d76f96b93f345b86f/packages/styled-components/docs/tips-and-tricks.md#refs-to-dom-nodes:

对 DOM 节点的引用

styled-components 使用新的 React 16.3 APIforwardRef。因此,像在任何其他组件上一样设置 refs,它们将自动解析为底层 DOM 元素或包装的组件类实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 开发工具中组件的forwardRef 是什么意思以及如何使用它? 的相关文章

随机推荐

  • 任何人都可以翻译 X12 271 医疗保健回复 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 代码 将 271 医疗保健资格福利响应转换为更可用的格式 以便我可以将某些段和值显示到
  • 未找到资源绘图

    当我在手机上安装应用程序时 它立即崩溃 告诉我找不到可绘制对象 Resource com aaronapp hideme drawable ic clear 7f07007a is not a Drawable color or path
  • 如何在没有 php Artisan 服务的情况下查看 laravel 视图

    我怎样才能看到Laravel无需 artisan 命令即可查看CLI 我没有CLI从我的托管提供商处 我只能访问FTP 跑步Laravel我必须使用这个命令CLI php artisan serve port 8080 host 0 0 0
  • 如何从多个进程中拆分和重新加入 STDOUT?

    我正在开发一个管道 该管道有几个随后合并的分支点 它们看起来像这样 command2 command1 command4 command3 每个命令写入 STDOUT 并通过 STDIN 接受输入 来自 command1 的 STDOUT
  • 如何将长日期值转换为 mm/dd/yyyy 格式[重复]

    这个问题在这里已经有答案了 可能的重复 将长字符串转换为日期 https stackoverflow com questions 11753341 converting long string to date 我需要转换long日期值至月
  • 如何对应用程序状态建模?

    我正在编写一个游戏 我想以一种干净的 面向对象的方式对其不同的状态进行建模 我猜 Game Maker 的类比是框架 以前 我是通过以下方式完成的 class Game enum AppStates APP STARTING APP TIT
  • SQL Server 数据库迁移向导发生了什么?

    SQL Server 数据库迁移向导 又名 SQL Azure 迁移向导 以前位于http sqlazuremw codeplex com http sqlazuremw codeplex com 但已经消失了 我试图通过谷歌搜索它的新家
  • 未找到带标签的句柄可放入图例折线图中

    我正在使用 matplotlib 绘制折线图 在所有其他情况下 它通常会自动检测图例 但这次我使用数据透视表来绘制图表 我认为这会阻止它 我不确定如何绘制图例 No handles with labels found to put in l
  • GWT + 流程构建器

    是否可以将 ProcessBuilder 与 GWT 一起使用 当我声明一个新 ProcessBuilder 的实例时 我得到 java lang ProcessBuilder is not supported by Google App
  • 将 .Glade(或 xml)文件转换为 C 源代码的工具

    我正在寻找可以将 Glade 或 xml 文件转换为 C 源代码的工具 我尝试过 g2c Glade To C Translator 但我正在寻找 Windows 二进制文件 任何人都知道有什么好的窗口工具 Thanks PP 你不需要工具
  • Firebase 存储下载我上传的原始文本,而不仅仅是网址

    我上传了一个原始的String使用提供的示例对 firebase 存储进行 测试 here https firebase google com docs storage web upload files upload from a stri
  • DatePicker 的 setMinDate() [重复]

    这个问题在这里已经有答案了 我在几个地方看到了有关堆栈溢出的这个问题 但给出的答案对我不起作用 所以我在这里 我需要将日期选择器的最小日期动态设置为当前日期 我的最低 API 是 12 我试过这个 Calendar minCalendar
  • 如何阻止一个节点上的死锁导致整个集群崩溃?

    我正在 MariaDB 下运行 3x 节点 Galera 集群 该应用程序采用 PHP 语言 使用 mysqli 扩展 偶尔我会得到一个Deadlock https dev mysql com doc refman 5 5 en error
  • 使用 javascript 更改图像不透明度

    如何使用 javascript 更改图像不透明度 我将使用 javascript 创建淡入淡出效果 有示例吗 有没有像 image opacity 这样的东西可以通过 JS 代码更改 它是如何设置的 thanks 假设您使用纯 JS 请参阅
  • Spring @Autowire 关于属性与构造函数

    因此 由于我一直在使用 Spring 如果我要编写一个具有依赖项的服务 我将执行以下操作 Component public class SomeService Autowired private SomeOtherService someO
  • 如何获取网页的最后修改日期? [复制]

    这个问题在这里已经有答案了 我想知道如何使用 C 获取网页的最后修改日期 我尝试了下面的代码 但我只得到今天的日期 HttpWebRequest req HttpWebRequest WebRequest Create http www c
  • React 开发工具中组件的forwardRef 是什么意思以及如何使用它?

    当我在 React 开发工具中检查组件结构时 我可以看到有一个forwardRef标记 我很困惑 因为源代码中没有使用它的迹象 它是怎么存在的以及我该如何使用它 The forwardRef调用不在您自己的代码中 它们在您正在使用的包中 s