使用 React JS 呈现格式化文本

Rendering formated text with ReactJS

抱歉,如果您觉得这个问题很愚蠢或离题,但我有以下问题。我正在试验 ReactJS 并尝试编写简单的类似博客的单页应用程序。

我希望用户在我的博客上发表具有丰富文字修饰功能的文章。所以我将允许他们使用一些 html 标签。问题是:呈现用户输入数据的最佳方式是什么?

我可以简单地获取他们的 html 输入,转义危险的 html 标签(如脚本等),然后使用 dangerouslySetInnerHTML 渲染原始 html。这是一个好方法吗?是否有一些 ReactJS 特定功能可以解决我的问题?

谢谢!

不,如果可以,请避免dangerouslySetInnerHtml。这在官方react documents:

中也有说明

In general, setting HTML from code is risky because it’s easy to inadvertently expose your users to a cross-site scripting (XSS) attack.

一种可能的方法是定义特定的输入格式,如@canaan seaton 所述。 我的想法是使用像 draftjs 这样的组件来呈现富文本内容,并让编辑能够看到他们得到的内容(所见即所得)。 Draftjs 真的很容易理解,那里有很多资源和附加包(如语法高亮,...)。

当然您也可以使用任何其他富文本编辑组件。