替代 dangerouslySetInnerHTML

Alternative to dangerouslySetInnerHTML

我使用 React 构建了一个存储文档的 Web 应用程序。这些是在 HTML 中创建的,然后存储在数据库中。为了在应用程序中显示它们,我通过使用 dangerouslySetInnerHTML.

将 HTML 加载到 div
<div dangerouslySetInnerHTML={{__html: this.props.page.content}} />

即使通过这个工作得很好,名称 dangerouslySetInnerHTML 建议更多地关注这种情况,但我想知道究竟可以做些什么来保持足够的灵活性来加载 HTML 并使它出现在网络应用程序中。我相信危险这个词解决了跨站点脚本的危险,这意味着可以注入脚本,执行有害代码。

作为一种对策,我考虑在将 HTML 代码解析到 div 之前清理它。解决此问题的一个库是 DOMPurify. Another way would be to convert the HTML code from the database directly into React Elements using html-react-parser.

这是正确的方法吗?或者有 dangerouslySetInnerHTML 的替代方案吗?

也许这些解析器可以满足您的需求

html-to-react

html-react-parser