【发布时间】:2019-10-31 09:37:18
【问题描述】:
我正在为使用react-icons 导入的图标创建一个包装器组件。以下是它现在的外观示例:
import { FaTwitter as Twitter} from 'react-icons/fa'
import { Icon } from './elements
<Icon>
<Twitter />
<Icon>
现在,这就像我想要的那样工作——但我想简化代码。理想情况下,我希望它看起来/像这样工作:
<Icon name='twitter' />
知道怎么做吗?
注意:如果有帮助,这里是我的Icon 组件的当前代码:
export const Icon = props => <IconBase {...props} />
<IconBase> 组件只是来自styled-components 的一些样式。
更新
我只想指出,Twitter 示例就是这样——一个示例。无论我将什么名称传递给<Icon> 组件,我都在寻找一种可行的解决方案。因此,换句话说,以下所有(以及更多)都将起作用:
<Icon name="Facebook" />
<Icon name="Search" />
<Icon name="Menu" />
每一个都相当于:
<Icon><Facebook /></Icon>
<Icon><Search /></Icon>
<Icon><Menu /></Icon>
换句话说,无论我从react-icons 中提取什么图标,它都会正确呈现在name 属性上。
【问题讨论】:
-
您可以创建一个字典对象,该对象指向您要呈现为
Iconchildren 的组件。类似{twitter: <Twitter />} -
推特是功能吗?
-
@Jesse Twitter 是一个组件。所以
<Icon name="twitter"/> 相当于<Icon><Twitter /></Icon> -
@JohnSnow 我不知道它是如何工作的。你介意给我看一个更详细的例子吗?
标签: javascript reactjs react-component react-icons