热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

何时在React18中使用“useImperativeHandle”和“forwardRefs”

何时在React18中使用“useImperativeHandle”和“forwardRefs”有时,你必须拿出大枪imageoftitlebyauthor这篇文章是续https:

何时在 React 18 中使用“useImperativeHandle”和“forwardRefs”

有时,你必须拿出大枪

image of title by author

这篇文章是续 https://betterprogramming.pub/react-v18-demystifying-useref-forwardref-and-useimperativehandle-feec2fc5b2f6 我们在哪里看到了 refs 是什么以及它们是如何运作的。借助从上一篇文章中获得的知识,让我们深入了解一些更复杂的理解,它可以在具有大量组件嵌套和一些真正基于 DOM 的需求的实际项目中派上用场。


前向参考

什么是没有问题的解决方案,对吧?所以,让我们定义一个常规裁判无法完成工作的情况。如果我们有一个父组件想要引用子组件中定义的元素之一并修改焦点状态怎么办?让我们创建一个这样的例子。

The parent component controls the focus of the button defined in the child component.

如上所示,父组件控制子组件按钮的焦点。它并不像将父级中定义的 ref 作为道具传递给子级那么简单。在我们的例子中, ref 是一个特殊属性,定义在要更改焦点的确切 HTML 元素上,而不是子组件包装器,因为它只是一个函数。

我们可以通过将子组件包装成一个 前向引用 React 提供的函数,它将处理这个委托。这个函数应该传输发送的 props 并允许组件上有一个额外的 props,即我们的“ref”。这是代码:

How to use forwardRef in React?


使用命令式句柄

好吧,看起来,我们在上一节中取得的成就对于即使是复杂的情况也足够了。不过,有时您可能会想在组件内定义自定义 ref 功能,该功能将暴露给使用它的组件。让我们尝试创建一个需要这种细粒度控制的情况。

默认情况下,输入的焦点颜色是 蓝色的 但是假设我们的忍者应该得到一个超临界的上忍级别任务,那么输入字段应该集中在 红色的 反而。

The parent component can control which colour the child’s input focuses on.

为了说明使用 使用命令式句柄 在这种情况下,让我们脱离常识,构建两个通过 ref 绑定到输入组件的自定义方法。这一次,我们将有两个自定义方法,而不是默认的焦点方法 焦点红色() 焦点蓝() .

我们仍然需要使用 前向引用 将 ref 传递给子组件,但在子组件内部,我们将在 使用命令式句柄 钩。代码如下所示:

We are adding custom methods to the ref using useImperativeHandle.


需要注意的重要一点是,在上面的代码中,我们并没有像以前那样扩展默认可用的方法,而是创建了一组全新的方法。所以 _默认焦点()_ 方法不再可供我们使用,调用它会给我们带来甜蜜的错误。


The focus method is not available when using the imperative handle.


结论

总结一下,我将重复我在上一篇文章中所说的:在进行基于虚拟 dom 的开发时,不应该使用对 DOM 本身的引用,因为您在真实 DOM 中所做的更改不会正确地转移到 vDOM设置,这会导致意外的反应。

我选择了 重点 作为本文的中心主题,因为它是需要召唤裁判时的主要需求之一。 React 提到了一组有限的 refs 用例,你可以在这里看到: https://reactjs.org/docs/refs-and-the-dom.html#when-to-use-refs .

**想要连接?** 领英:[ https://www.linkedin.com/in/sameerkumar1612](https://www.linkedin.com/in/sameerkumar1612/)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/33144/34551308



推荐阅读
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文探讨了使用JavaScript在不同页面间传递参数的技术方法。具体而言,从a.html页面跳转至b.html时,如何携带参数并使b.html替代当前页面显示,而非新开窗口。文中详细介绍了实现这一功能的代码及注释,帮助开发者更好地理解和应用该技术。 ... [详细]
  • 本文全面解析了JavaScript中的DOM操作,并提供了详细的实践指南。DOM节点(Node)通常代表一个标签、文本或HTML属性,每个节点都具有一个nodeType属性,用于标识其类型。文章深入探讨了DOM节点的创建、查询、修改和删除等操作,结合实际案例,帮助读者更好地理解和掌握DOM编程技术。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 大家好,我是梅巴哥er。本文将深入探讨Redux框架中的第三个实战案例,具体实现每两秒自动点击按钮以触发颜色变化的功能。该案例中,一个关键点在于是否需要使用异步操作来处理定时任务,我们将详细分析其必要性和实现方式。通过这一实例,读者可以更好地理解Redux在实际项目中的应用及其异步处理机制。 ... [详细]
  • 2017年12月7日:React中实现不同组件间的路由导航
    在React应用中,实现从首页到不同组件的路由导航是常见的需求。本文介绍了如何通过配置路由来实现这一功能。具体步骤包括:1. 在首页设置路由链接,使其能够跳转到不同的目标组件;2. 确保目标组件正确配置,特别是在导入时使用默认导出(`default`),以确保路由能够正常工作。此外,文章还提供了详细的代码示例,帮助开发者更好地理解和实现这一功能。 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • 使用jqTransform插件美化表单
    jqTransform 是由 DFC Engineering 开发的一款 jQuery 插件,专用于美化表单元素,操作简便,能够美化包括输入框、单选按钮、多行文本域、下拉选择框和复选框在内的所有表单元素。 ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
author-avatar
蓝色流星魂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有