」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用危險的SetInnerHTML在React中安全地渲染HTML字串?

如何使用危險的SetInnerHTML在React中安全地渲染HTML字串?

發佈於2024-11-18
瀏覽:996

How to Safely Render HTML Strings in React Using dangerouslySetInnerHTML?

安全地將HTML 字串渲染為HTML

在這種情況下,嘗試渲染正常的HTML 內容字串時會出現問題,但它而是顯示為字串而不被解釋為HTML。當angerlySetInnerHTML 中使用的屬性是物件而不是字串時,通常會遇到這種情況。

要解決此問題,請確保 this.props.match.description 屬性是字串。如果不是,請在將其指派給屬性之前將其轉換為 HTML。

處理 HTML 實體

處理 HTML 實體時會出現其他複雜情況。在這種情況下,您需要先對實體進行解碼,然後再將其傳遞給angerlySetInnerHTML。

範例程式碼

請考慮以下範例程式碼:

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      description: '

Our Opportunity:

', }; } htmlDecode(input) { const e = document.createElement('div'); e.innerHTML = input; return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue; } render() { return (
); } } ReactDOM.render(, document.getElementById('root'));

在此範例中,description 屬性包含 HTML 實體()。為了正確渲染它,在將 HTML 傳遞給angerlySetInnerHTML 之前,使用 htmlDecode 函數對這些實體進行解碼。

最新教學 更多>
  • 如何使用不同單位的無單位 CSS 變數?
    如何使用不同單位的無單位 CSS 變數?
    如何靈活地使用無單位CSS 變數無單位CSS 變數提供了儲存數值的能力,這些數值可以在整個樣式表中方便使用。然而,可能會出現這樣的情況:您希望在不同的上下文中使用相同的變量,需要不同的單位,例如百分比或像素。 這種困境的一個例子是設定一個值為 10 的 CSS 變量,但是需要在一個實例中將其用作百分...
    程式設計 發佈於2024-11-18
  • 當 #await 區塊在 Svelte(Kit) 中解析時執行函數
    當 #await 區塊在 Svelte(Kit) 中解析時執行函數
    跳至内容: 关于 svelte 中的 #await 块 当 #await 块解析或拒绝时运行(触发)函数 修复浏览器中显示的未定义或任何返回的文本 1. 方法一(返回空字符串): 2. 方法二(用CSS隐藏UI中函数返回的文本。) PS:需要雇用 SvelteKit 开发人员吗?联系我 ...
    程式設計 發佈於2024-11-18
  • 一個 Java 檔案中可以有多個類別嗎?
    一個 Java 檔案中可以有多個類別嗎?
    Java 檔案中的多個類別在 Java 中,單一 .java 檔案中可以有多個類別。不過,公共頂級類別只能有一個,而且必須與原始檔案同名。 一個文件中有多個類別的目的是為了組織邏輯上相關的程式碼。這些類別通常包括公共頂級類別的支援功能,例​​如內部資料結構或實用方法。透過將它們捆綁在一起,您可以將相...
    程式設計 發佈於2024-11-18
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-18
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-18
  • 如何有效測試PDO資料庫連線並處理錯誤?
    如何有效測試PDO資料庫連線並處理錯誤?
    測試PDO資料庫連線開發資料庫安裝時,確保資料庫連線的有效性至關重要。當嘗試建立預設設定時,這一點變得尤為重要。 PDO(PHP 資料物件)提供了一種測試有效和無效連接的有效方法。 驗證連線若要使用PDO 連線至MySQL 資料庫,語法為:$dbh = new pdo('mysql:host=127...
    程式設計 發佈於2024-11-18
  • 當現有值相同時,MySQL 更新查詢是否會覆寫它們?
    當現有值相同時,MySQL 更新查詢是否會覆寫它們?
    MySQL更新查詢:覆寫現有值在MySQL中,更新表時,可能會遇到這樣的情況:為列指定的新值是與其目前值相同。在這種情況下,自然會出現一個問題:MySQL 會覆寫現有值還是完全忽略更新? UPDATE 語句的 MySQL 文件提供了答案:如果將列設定為它目前的值,MySQL 會注意到這一點並且不會更...
    程式設計 發佈於2024-11-18
  • 為什麼 `std::atomic` 的儲存使用 XCHG 來實現 x86 上的順序一致性?
    為什麼 `std::atomic` 的儲存使用 XCHG 來實現 x86 上的順序一致性?
    為什麼std::atomic 的儲存採用XCHG 來實現順序一致性在x86 和x86_64 架構的std::atomic 上下文中,a具有​​順序一致性的儲存操作(std::memory_order_seq_cst) 使用XCHG而不是具有內存屏障的簡單存儲作為實現順序釋放語義的技術。 順序一致性和...
    程式設計 發佈於2024-11-18
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-18
  • 為什麼 C++ 不直接支援從函數傳回數組?
    為什麼 C++ 不直接支援從函數傳回數組?
    為什麼C 不贊成陣列返回函數C 景觀與Java 等語言相反,C 不支援陣列返回函數不為傳回數組的函數提供直接支援。雖然可以返回數組,但過程很麻煩。這引發了有關此設計決策背後的根本原因的問題。 C 中的陣列機制要理解這一點,我們必須深入研究 C 中陣列的基礎知識。 C,陣列名稱代表記憶體位址,而非陣列...
    程式設計 發佈於2024-11-18
  • 好的,以下是一些適合文章內容的標題:

* How to Fix the \"-lGL: not found\" Error in Qt
* Qt Compilation Error: \"-lGL: not found\" - What to Do
* Troubleshooting \"-lGL: not found\" Error in Qt Projects
* Resolving the
    好的,以下是一些適合文章內容的標題: * How to Fix the \"-lGL: not found\" Error in Qt * Qt Compilation Error: \"-lGL: not found\" - What to Do * Troubleshooting \"-lGL: not found\" Error in Qt Projects * Resolving the
    解決Qt 中的「-lGL:未找到」錯誤當嘗試在QtCreator 中編譯新建立的專案時,某些使用者可能會和遇到“-lGL:未找到”錯誤。出現此錯誤通常是因為未安裝必要的依賴項。 要解決此問題,請按照以下步驟操作: libgl1-mesa-dev: 該軟體包包含在 Qt 專案中支援 OpenGL 所需...
    程式設計 發佈於2024-11-18
  • PHP 的「eval」函數使用起來安全嗎?
    PHP 的「eval」函數使用起來安全嗎?
    什麼時候 eval 不是邪惡的? 雖然 PHP 的 eval 函數經常被勸阻,但它在 PHP 5.3 中的實用性值得商榷。儘管出現了LSB 和閉包,但以下是一些可以想像的用例,其中eval 可能仍然是首選:評估安全表達式:Eval 可用於評估數值或PHP 程式碼的其他特定子集,例如簡單的數學表達式,...
    程式設計 發佈於2024-11-18
  • 如何在 Go 中使用動態屬性解組 XML?
    如何在 Go 中使用動態屬性解組 XML?
    Golang:使用動態屬性解組XML簡介:在Go 中,encoding/xml提供了處理XML 資料的高效且通用的方法。然而,在處理具有動態屬性的 XML 元素時,由於存在未知數量和類型的屬性,解組變得具有挑戰性。 問題:如何使用以下方法解組 XML 標籤:當你沒有預料到會遇到的確切屬性時,如何在 ...
    程式設計 發佈於2024-11-18
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-18
  • C++中可以直接初始化類別資料成員嗎?
    C++中可以直接初始化類別資料成員嗎?
    類別資料成員可以直接初始化嗎? 在 C 中,類別資料成員不能使用直接初始化語法 () 來初始化,如下例所示:#include <iostream> class test { public: void fun() { int a(3); std::c...
    程式設計 發佈於2024-11-18

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

Copyright© 2022 湘ICP备2022001581号-3