javascript - 在 ReactJS 中将文本名称呈现为组件
问题描述
我有一个看起来像这样的 javascript 对象:
export const iconBoxes = [
{
...
icon: 'Lightbulb',
...
},
{
...
icon: 'Sun',
...
}
]
然后我在 React 组件中映射该对象,如下所示:
{iconBoxes.map(box => {
return (
<Box>
...
<Icon as={box.icon} />
...
</Box>
)
})}
该as
道具来自 S风格的Components。
话虽如此,这不起作用。但是,如果我要这样编写代码,它将起作用:
<Box>
...
<Icon as={Lightbulb} />
...
</Box>
Lightbulb
来自react-icon
:_
import { FaRegLightbulb as Lightbulb } from 'react-icons/fa'
我的问题是,当从 js 对象中提取名称时,我怎样才能让它工作?
解决方案
这里的问题是 box.icon 只是一个字符串,而你想要的是一个组件。样式化组件无法理解此字符串,因为它不是 HTML 标记。所以你可以做的就是将你需要的所有图标组件映射到一个对象中,然后根据box.icon传递正确的一个。
你最终会得到这样的东西
import { FaRegLightbulb } from 'react-icons/fa'
const allIcons = {
"Lightbulb": FaRegLightbulb,
...
}
<Icon as={allIcons[box.icon]} />
推荐阅读
- vba - 在日期范围内搜索访问查询时遇到问题
- python - 如何在 Python 中找到 MemoryError 的来源?
- c - 我的第二个扫描功能不起作用,默认从我的数组中提取第二个值
- javascript - 如何使用 async/await 实现 Promise.race()
- build - 如何导入 DevOps 构建?
- node.js - 如何修复 Windows 上的“npm 不支持 Node.js v11.14.0 错误”?
- r - 在R中找到广义正态分布参数的最大似然估计的问题
- yocto - yocto 自定义收据的 bbappend 修补错误
- javascript - 如何修复气泡图中带有文本的可拖动功能?
- android - 如何使用 dart/flutter 从 API 获取数据?