我尝试从react-icons库对应的字符串自动创建React元素。但我在控制台中收到以下错误:
- 警告:
<RiHeartPulseFill />
使用的大小写不正确。请对React组件使用PascalCase,或对HTML元素使用小写。 - 警告:标记
<RiHeartPulseFill>
在此浏览器中无法识别。如果要呈现React组件,请以大写字母开头。
目前我有一个包含名称和iconName的数据文件(见下文)
const categoriesData = [
{
name: 'Vitals',
iconName: 'RiHeartPulseFill',
},
{
name: 'Body',
iconName: 'RiBodyScanFill',
},
{
name: 'Sleep',
iconName: 'RiHotelBedFill',
},
{
name: 'Metabolism',
iconName: 'RiLungsFill',
},
{
name: 'Stress',
iconName: 'RiMentalHealthFill',
},
{
name: 'Strength & Training',
iconName: 'RiRunFill',
},
{
name: 'Lifestyle',
iconName: 'RiCellphoneFill',
},
]
export default categoriesData
我想动态呈现React元素,其名称与上述数据文件中的iconName完全相同,因为React图标需要具有这些名称的特定元素。
然后,我尝试创建一个导航链接列表(使用React Router <Link>
语法并添加React图标+名称。请参见下面的代码:
const menuCategories = categoriesData.map((category) => {
const IconElement = category.iconName
return (
<Link
to={`/data/${category.name.toLowerCase()}`}
key={category.name}
className="flex flex-row items-center gap-2"
>
<IconElement />
{category.name}
</Link>
)
})
我遇到的问题是以下错误:警告:<RiHeartPulseFill />
使用的大小写不正确。请对React组件使用PascalCase,或对HTML元素使用小写。
我似乎没有错,因为它实际上是PascalCase。但是,当我检查开发工具时,我看到以下内容:<riheartpulsefill></riheartpulsefill>
我不知道为什么会这样。有办法吗?
附加:有人知道我如何导入基于初始数据文件的图标名吗?我正在考虑创建一个图标选择工具,这样只有选中的图标才能从react-icons库中导入。
2条答案
按热度按时间d6kp6zgx1#
如果你想动态地呈现这些图标组件,那么你需要导入并在配置中指定它们,而不是对应于它们名称的字符串。
示例:
另一种方法是为图标组件创建并导出查寻对象。
一个二个一个一个
bvjxkvbb2#
使用React.createElement。请查看此处以了解如何操作:Create react component dynamically
下面是我的递归示例: