html - React 将粘贴的 html 渲染为标签,而不是字符串
问题描述
我有一个快速的问题。我目前正在后端使用 Python 开发 React 应用程序。在 Python 方面,我解析了一些 html 文件,并从中提取了一些 html 标签。然后它被打包成一个 JSON 并发送到前端。所以 React 应用程序会收到这样的信息:
{'<b>id</b>': '<a href="https://example.com?foo=42">Link</a>'}
所以这些就像字符串形式的原始 html 标签。现在我想渲染它们。这会发生:
这就是它在开发工具下的样子:
所以它被渲染为文字字符串,我想要的是左边的文本是粗体,而另一边的文本是一个实际的超链接。有没有办法做到这一点?
解决方案
React 故意阻止了这一点。请参阅文档。
一般来说,从代码中设置 HTML 是有风险的,因为很容易无意中将您的用户暴露给跨站点脚本 (XSS) 攻击。
您仍然可以使用dangerouslySetInnerHTML
. 将以下测试 div 替换为包含 html 的变量。
const test = "<div>TEST</div>";
return <div dangerouslySetInnerHTML={{__html: test }} />;
推荐阅读
- ios - 未调用 UIMenuBuilder(催化剂)
- android - 带有屏幕锁定功能的 Android 手机上的 Firebase 通知
- sql - 如何在 Nodejs 中连接 Postgres 模式并使用 Sequelize 动态切换模式?
- java - Java Spring,getMapping返回文件夹的文件
- internet-explorer - 如何在 IE 11 上访问相机(视频)?
- python-2.7 - pyspark 读取 jdbc 以获取 DB2 表的下限值和上限值
- asp.net-core - ASP.net 核心 IIS 快递 404
- android - 在对话框中更新 RecyclerView 时出错
- android - 如何将活动转换/更改为片段?
- reactjs - 如何在reactjs中设置cookie jwt访问令牌和刷新令牌?