reactjs - 从 Json 渲染字体真棒?
问题描述
我试图动态地制作一个导航栏。
我有一个名为“NavItem”的组件
import ReactHtmlParser from 'react-html-parser';
export default class NavItem extends Component {
render() {
const props = this.props;
const item = props.item;
console.log(item.icon);
return (
<li>
<Link to={item.path}> { ReactHtmlParser(item.icon) } </Link>
</li>
);
}
}
这在另一个组件中被调用并通过“地图”呈现
我的 json 看起来像这样
[
{
path: '/',
icon: '<i className="fas fa-home" />',
toolTip: 'Home'
},
]
我的代码似乎没有呈现任何东西。我只看到图标应该位于的空白区域。
当我通过 chrome 中的开发工具查看它时,我只看到: <i className="fas fa-home" />
所以它看起来不像是在渲染它。
我有来自不同库的不同图标,这就是为什么我不只是将“classNames”存储在 json 和整个标签中。
解决方案
我知道这是一篇旧帖子,但我遇到了同样的问题并最终像这样解决了它。
IconMapping.jsx
import React from 'react';
import {
faPlusCircle,
faChevronDown,
faWrench
} from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
export default {
'faPlusCircle': <FontAwesomeIcon icon={faPlusCircle} />,
'faChevronDown': <FontAwesomeIcon icon={faChevronDown} />,
'faWrench': <FontAwesomeIcon icon={faWrench} />
};
然后在您想要图标的组件中
import iconMap from '../../iconMapping';
在您的 JSON 数据循环中
<a href={subitem.url} >
{iconMap[subitem.icon]}
{subitem.name}
</a>
推荐阅读
- excel - 在没有第一次打印预览的情况下将方向更改为 xlLandscape
- c# - Fiddler 访问嵌套的 json 进行修改
- r - 在直方图中自动标记均值、中值和众数
- visual-studio-code - 如何在 VSCode 中导入 PhpStorm 格式化程序?
- google-cloud-platform - 使用 Terraform 启用 GCS 的“可互操作”访问?
- machine-learning - 罕见事件的机器学习分类问题总是预测为 0
- android-management-api - 是否可以将未经 Play 认证的设备注册到 Android 管理 API 中?
- java - 从 Android 中的 Firebase 实时数据库中检索 ListView 上的数据不起作用
- reactjs - 在组件重新渲染时删除了 Material-UI 自定义 JSS 样式
- powershell - 限制会话时间