”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 React createPortal 掌握模态、工具提示等

使用 React createPortal 掌握模态、工具提示等

发布于2024-11-01
浏览:362

Master Modal, Tooltips and more with React createPortal

在 React 中创建模态和工具提示通常很复杂,难以设计样式,并会​​导致许多样式错误。
createPortal api 简化了这个过程,允许在主 DOM 之外渲染组件,从而简化样式设计和可维护性。在这篇文章中,我们将学习如何使用此工具在 React 中以正确的方式创建模式和工具提示。

了解 createPortal api

createPortal 是 React 内置函数,允许您在 DOM 的不同部分渲染组件。它对于构建特别有用:模态和叠加、第三方组件和自定义 UI 元素。

它是如何运作的

门户用于组件的返回语句内,它仅更改 DOM 节点的物理位置。这就像将 DOM 节点传送到主 DOM 树之外。 createPortal API 访问两个参数和第三个可选参数:

  • Children:任何可以用 React、div、组件或 React 片段渲染的内容。
  • domNode:这是要放置的孩子的位置。
  • key(可选):用作门户密钥的唯一数字或字符串。

如果我们假设我们在组件 A 中创建一个门户并在组件 B 中渲染它,则门户的子级将访问组件 A 的所有状态和变量,并在组件 A 中渲染时像在组件 A 中一样运行它B、

创建和使用门户

在下面的示例中,portal 用于传送接受状态的组件 Child 并将该组件移动到主体。

import { createPortal } from 'react-dom'

const App = () => {
  const [state, setState] = useState()

  return(
    

...

createPoratl( , document.body )
) } export default App

现在子组件将在 HTML 中的 body 标签中呈现。

结论

createPortal 是 React 中一个很有价值的工具,用于创建模式、工具提示和其他需要在主 DOM 树之外渲染的组件。通过使用此工具,您可以实现这些元素的更清晰、更灵活、更高效的方法。

版本声明 本文转载于:https://dev.to/kada/master-modal-tooltips-and-more-with-react-createportal-2h9o?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • ## 如何有效分析 PHP 内存使用情况:Xdebug 替代方案和最佳实践
    ## 如何有效分析 PHP 内存使用情况:Xdebug 替代方案和最佳实践
    分析 PHP 内存消耗您寻求一种方法来检查 PHP 页面的内存使用情况。具体来说,您的目标是确定数据的内存分配并识别导致大量内存消耗的函数调用。Xdebug 的限制虽然 Xdebug 提供了跟踪功能,提供内存增量信息,其丰富的数据可能令人难以承受。如果细粒度过滤选项可用,问题就可以得到解决。然而,此...
    编程 发布于2024-11-07
  • 如何在虚拟 DOM 中渲染组件以及如何优化重新渲染
    如何在虚拟 DOM 中渲染组件以及如何优化重新渲染
    构建现代 Web 应用程序时,高效更新 UI(用户界面)对于保持应用程序快速响应至关重要。许多框架(如 React)中使用的常见策略是使用 虚拟 DOM 和 组件。本文将解释如何使用 Virtual DOM 渲染组件,以及如何优化重新渲染以使 Web 应用程序不会变慢。 1.什么是虚...
    编程 发布于2024-11-07
  • CRUD 操作:它们是什么以及如何使用它们?
    CRUD 操作:它们是什么以及如何使用它们?
    CRUD 操作:它们是什么以及如何使用它们? CRUD 操作(创建、读取、更新和删除)是任何需要数据管理的应用程序的基础。对于开发人员来说,了解这些操作非常重要,因为它们提供了我们有效与数据库交互所需的基本功能。在这篇博文中,我将通过展示如何将 CRUD 操作集成到我的 Yoga ...
    编程 发布于2024-11-07
  • 推出免费 Java 实用程序包
    推出免费 Java 实用程序包
    面向 Java 后端开发人员的快速且易于使用的编程工具包 在我作为管理员和开发人员的职业生涯中,我多次从无数的免费软件和开源产品中受益。因此,我很自然地也为这个社区做出贡献。 这个 Java 类集合是在各种项目过程中创建的,并将进一步开发。我希望这个工具也能为您服务。 https://java-ut...
    编程 发布于2024-11-07
  • 如何在 PHP Foreach 循环中检索嵌套数组的数组键?
    如何在 PHP Foreach 循环中检索嵌套数组的数组键?
    PHP:在 Foreach 循环中检索数组键在 PHP 中,使用 foreach 循环迭代关联数组可以访问这两个值和钥匙。但是, key() 函数仅返回当前值的键,这在处理嵌套数组时可能是不够的。例如,考虑这样的数组:<?php $samplearr = array( 4722 =&g...
    编程 发布于2024-11-07
  • 如何将 MySQL 表中的 Latin1 字符转换为 UTF-8?
    如何将 MySQL 表中的 Latin1 字符转换为 UTF-8?
    将 UTF8 表上的 Latin1 字符转换为 UTF8您已确定您的 PHP 脚本缺少必要的 mysql_set_charset 函数以确保正确处理UTF-8 字符。尽管实施了此修复,您现在仍面临着纠正包含存储在 UTF8 表中的 Latin1 字符的现有行的挑战。要解决此问题,您可以利用 MySQ...
    编程 发布于2024-11-07
  • 如何使用 Zapcap API(字幕 API)
    如何使用 Zapcap API(字幕 API)
    将 ZapCap 的自动视频处理 API 集成到您现有的系统中是一个简单的过程,旨在最大限度地降低复杂性并最大限度地提高效率。 ZapCap 提供开发人员友好的 API 文档,以确保无缝入门。 分步集成指南 第 1 步:在 ZapCap 获取您的 API 密钥 在开始之前获...
    编程 发布于2024-11-07
  • 探索引导组件
    探索引导组件
    Bootstrap 5 是最流行的前端框架之一,它带来了一系列有用的组件和实用程序,可帮助开发人员快速构建响应灵敏且具有视觉吸引力的网站。 牌 卡片是 Bootstrap 5 中的多功能组件,可让您以干净、有组织的方式显示内容。它们非常适合以美观且实用的方式展示信息。 ...
    编程 发布于2024-11-07
  • 简化 SVG 管理:将路径转换为单个 JS 常量文件
    简化 SVG 管理:将路径转换为单个 JS 常量文件
    构建 React.js 应用程序时,有效管理 SVG 图标至关重要。 SVG 提供了响应式设计所需的可扩展性和灵活性,但在大型项目中处理它们可能会变得很麻烦。这就是 svg-path-constants 的用武之地,它是一个 CLI 工具,旨在通过将 SVG 路径转换为可重用常量来简化 SVG 工作...
    编程 发布于2024-11-07
  • 如何管理 JavaScript 代码结构
    如何管理 JavaScript 代码结构
    出色地!维护干净且有组织的 JavaScript 代码库对于项目的长期成功至关重要。结构良好的代码库可以增强可读性,减少技术债务,并促进更轻松的调试和扩展。无论您正在开发小型项目还是大型应用程序,遵循构建 JavaScript 代码的最佳实践都可以显着改进您的开发过程。以下是如何管理 JavaScr...
    编程 发布于2024-11-07
  • 溢出可以配置为向左流吗?
    溢出可以配置为向左流吗?
    溢出可以配置为向左流动吗?溢出通常通过强制内容向右流动来处理,导致最左边的内容被裁剪。但是,可以通过应用特定的 CSS 样式来扭转此行为。解决方案要启用向左溢出,请按照给定的步骤操作:将溢出设置为隐藏:将溢出:隐藏应用到容器以防止内容超出其边界。文本右对齐:使用text-align: right将容...
    编程 发布于2024-11-07
  • 如何在保留数据类型的同时将 NumPy 数组与不同数据类型组合?
    如何在保留数据类型的同时将 NumPy 数组与不同数据类型组合?
    在 NumPy 中组合具有多种数据类型的数组将包含不同数据类型的数组连接成单个数组,每列中具有相应的数据类型一个挑战。不幸的是,使用 np.concatenate() 的常见方法会将整个数组转换为字符串数据类型,从而导致内存效率低下。要克服此限制,一个可行的解决方案是使用记录数组或结构化数组。记录数...
    编程 发布于2024-11-07
  • 如何在同一行水平对齐内联块?
    如何在同一行水平对齐内联块?
    在同一行水平对齐内联块问题内联块比浮动元素具有优势,例如基线对齐和自动居中当视口变窄时。然而,在同一行上水平对齐两个内联块可能会带来挑战。内联块对齐的挑战浮动可能会干扰基线对齐并导致不必要的环绕.相对和绝对定位会导致间距问题,类似于浮动。解决方案:使用文本对齐一个有效的解决方案是利用文本对齐: 证明...
    编程 发布于2024-11-07
  • 感到没有动力
    感到没有动力
    感觉自己像个菜鸟,放弃了几次。 我第一次开始考虑编码是在我还是个孩子的时候,但我选择成为一名社交蝴蝶,现在我已经 26 岁了,尝试了很多次学习编码 python、JS、React、DB 等但最终,我感到不知所措并放弃了它。 现在,正因为如此,我感觉自己像个失败的松手,我想解决这个...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3