使用 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 真的很容易理解,那里有很多资源和附加包(如语法高亮,...)。
当然您也可以使用任何其他富文本编辑组件。
抱歉,如果您觉得这个问题很愚蠢或离题,但我有以下问题。我正在试验 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 真的很容易理解,那里有很多资源和附加包(如语法高亮,...)。
当然您也可以使用任何其他富文本编辑组件。