React 应用程序渲染 html 实体(例如 & 符号)作为转义符

IT技术 wordpress reactjs utf-8 escaping
2021-04-29 15:58:20

我在 Wordpress 页面中嵌入了一个 React 应用程序。它从 JSON api 中提取内容并将其显示在各个区域。

我的问题是来自 api 的所有文本内容都显示为转义&字符,显示与号应该在哪里。

我的 wordpress 页面具有<meta charSet="utf-8" />我通常希望将其转换的页面,但对 React 内容没有影响。是不是因为渲染是在 React 中完成的?在哪种情况下,我需要以某种方式将 React 设置为使用 UTF-8?

1个回答

HTML(包括实体)在呈现为表达式时将呈现为字符串:

{htmlString}

为了解析 HTML,有dangerouslySetInnerHTMLprop:

<span dangerouslySetInnerHTML={{__html: htmlString }} />

顾名思义,这是不安全的,一般应该避免。如果字符串来自不受信任的来源或可被利用的来源,则可以将恶意代码呈现给客户端。

更可取的方法是专门解码实体,例如html-entities

import { Html5Entities } from 'html-entities';
const htmlEntities = new Html5Entities();

...

{htmlEntities.decode(htmlString)}

如果可能的话,可以通过首先不存储 HTML 实体来避免该问题。