html - 如何将 json 文件中的 FontAwesome 图标渲染到 React 应用程序中?
问题描述
晚上好,我有以下 JSON 结构:
"Flow": [
{
"title": "Is your multicloud secure and scalable?",
"icon": "<FontAwesomeIcon className='my-icon' icon={faShieldCheck} />"
}
],
如您所见,它使用了 React 版本的 FontAwesome Pro。但是我需要将它动态呈现到一个组件中。
到目前为止,我已经尝试过不同的方法。例如:
<div dangerouslySetInnerHTML={ { __html: item.icon } }></div>
也试过这个:
<div> { ReactHtmlParser(item.icon) } </div>
但到目前为止还没有运气。
我将不胜感激有关此事的任何新想法。提前致谢。
解决方案
删除quotes
json 中的icon
.
其实只需要在 json 中提供图标的名称,require
用于导入icon
while 渲染即可FontAwesomeIcon
。
代码片段
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
const myJson = {
Flow: [
{
title: "Is your multicloud secure and scalable?",
icon: "faHighlighter"
}
]
};
export default function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<FontAwesomeIcon
className="my-icon"
icon={require("@fortawesome/free-solid-svg-icons")[myJson.Flow[0].icon]}
/>
</div>
);
}
注意- 下面是更简洁的代码,但它会预先导入所有图标。
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
const icons = require("@fortawesome/free-solid-svg-icons");
const myJson = {
Flow: [
{
title: "Is your multicloud secure and scalable?",
icon: "faHighlighter"
}
]
};
export default function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<FontAwesomeIcon className="my-icon" icon={icons[myJson.Flow[0].icon]} />
</div>
);
}
推荐阅读
- express - Express文档中mounting是什么意思?
- javascript - 如何根据div高度显示块文本
- php - 带有 SMTP 和 Outlook 的 PHPMailer
- python - 从大型 CSV 过滤数据
- android - 连接 SHA1 生产指纹的 Firebase 错误
- windows - IIS 是否只记录一定百分比的请求?
- git - TFS:Git 推送在服务器上失败,但不是在本地
- java - java.lang.ClassNotFoundException springservlet
- angular - 在您的 Angular 6 库中包含“资产”
- python - 为什么 RandomizedSearchCV() 返回的分数比这里的默认分类器设置差?