」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 React createPortal 掌握模態、工具提示等

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

發佈於2024-11-01
瀏覽:210

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]刪除
最新教學 更多>
  • 如何存取Python字典中的第一個和第N個鍵值對?
    如何存取Python字典中的第一個和第N個鍵值對?
    取得 Python 字典中的第一個條目使用數位索引(如顏色[0])對字典進行索引可能會導致 KeyError 異常。從 Python 3.7 開始,字典保留插入順序,使我們能夠像有序集合一樣使用它們。 取得第一個鍵和值要取得字典中的第一個鍵和值,我們可以使用以下方法:列表轉換:使用list(dict...
    程式設計 發佈於2024-11-07
  • 使用 cProfile 和 PyPy 模組優化 Python 程式碼:完整指南
    使用 cProfile 和 PyPy 模組優化 Python 程式碼:完整指南
    介绍 作为 Python 开发人员,我们通常先关注让代码正常运行,然后再担心优化它。然而,在处理大规模应用程序或性能关键型代码时,优化变得至关重要。在这篇文章中,我们将介绍两个可用于优化 Python 代码的强大工具:cProfile 模块和 PyPy 解释器。 在这篇文章的结尾,...
    程式設計 發佈於2024-11-07
  • 上週我學到了什麼(
    上週我學到了什麼(
    原生 JavaScript 中的反應性 – 使用代理模式在應用程式狀態變更時觸發事件。 (前端大師課程 - “你可能不需要框架”) throw new Error("Error!") 不能在三元中使用(至少不能用作'else' 部分。三元運算子的最後一部分必...
    程式設計 發佈於2024-11-07
  • 如何在 Linux 系統上將 Java 應用程式作為服務運行?
    如何在 Linux 系統上將 Java 應用程式作為服務運行?
    Linux 系統服務導航:將Java 應用程式作為服務運行在Linux 系統管理領域,將應用程式作為服務進行管理對於確保其可靠且受控的執行至關重要。本文深入探討了將 Java 伺服器應用程式配置為在 Linux 作業系統上作為服務運行的過程,為使用者提出的問題提供了全面的解決方案。 主要目標是創建一...
    程式設計 發佈於2024-11-07
  • 如何在不安裝 Angular CLI 的情況下建立 Angular 專案的特定版本
    如何在不安裝 Angular CLI 的情況下建立 Angular 專案的特定版本
    您是否使用 Angular 並需要使用不同的 Angular 版本設定項目?這是為特定版本建立 Angular 專案的簡單指南,無論是否使用 Angular CLI! 為什麼要使用特定的 Angular 版本? 在處理多個 Angular 專案時,有時您需要鎖定特定版本。也許您的專...
    程式設計 發佈於2024-11-07
  • 如何反轉 CSS 中文字的方向?
    如何反轉 CSS 中文字的方向?
    如何在CSS 中反轉文字方向處理文字時,可能會出現需要反轉其方向的情況,以便它從右到左流動,而不是預設的從左到右流動。本文為此類場景提供了使用 CSS 的解決方案。 更改文字方向的 CSS 程式碼下列 CSS 程式碼可用於反轉文字方向:.cssClassName { direction: rtl...
    程式設計 發佈於2024-11-07
  • 如何使用 JavaScript 從字串中移除“data-”前綴
    如何使用 JavaScript 從字串中移除“data-”前綴
    從字串中剝離前綴:刪除「data-」許多程式設計任務都涉及操作字串。一項常見任務是刪除字串的特定部分,例如前綴或後綴。在本例中,我們希望從字串中刪除“data-”前綴,同時保留剩餘字元。 以下JavaScript 程式碼片段示範如何使用Replace() 方法實現此目的:var ret = &quo...
    程式設計 發佈於2024-11-07
  • ## 如何有效分析 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 =>...
    程式設計 發佈於2024-11-07
  • 如何將 MySQL 表中的 Latin1 字元轉換為 UTF-8?
    如何將 MySQL 表中的 Latin1 字元轉換為 UTF-8?
    將UTF8 表上的Latin1 字元轉換為UTF8您已確定您的PHP 腳本缺少必要的mysql_set_charset 函數以確保正確處理UTF-8 字元。儘管實施了此修復,您現在仍面臨著修正包含儲存在 UTF8 表中的 Latin1 字元的現有行的挑戰。 要解決此問題,您可以利用 MySQL 函數...
    程式設計 發佈於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

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3