我正在用Next JS开发一个网站,这是我第一次使用这门语言,我还有很多东西要学。
现在,我有一个专业订阅字体真棒,我期待直接在我的项目中使用他们的组件,如他们的指南中所述。
https://fontawesome.com/v6.0/docs/web/use-with/react/
https://fontawesome.com/v6.0/docs/web/use-with/react/add-icons
基本上,只要使用这样的组件:
<FontAwesomeIcon icon={brands("google")} />
它起作用了。
我无法解决的问题是如何在一个先前初始化的变量中动态地设置"google"值,我需要这个值是因为这个值是动态地从数据库中获取的。
如果我尝试:
var example = "google";
<FontAwesomeIcon icon={brands(example)} />
然后我收到这个错误:"引用图标时仅支持字符串文本(此处改用字符串)"。
有人有什么想法吗?
3条答案
按热度按时间tvokkenx1#
导入图标的方式使用了一个babel宏。这意味着引用的图标必须在构建时已知。它根本不起作用,因为Babel不能确定应该导入什么图标,它只能在运行时完成。这就是为什么它告诉你只支持字符串常量。
所以你需要使用第二种方法,在文档中有解释。你必须在图标和DB中的值之间有某种Map,然后抓取相关的图标。
另一种选择是使用
library.add
,这里有解释,然后做与上面相同的事情,但使用字符串代替导入的图标,例如google: 'fa-brands fa-google'
(同样,这里不确定确切的值)。xlpyo6sf2#
以下方法是否有效?
P.S.建议在ES6中使用
let
或const
关键字。0s0u357o3#
//实用工具
//React泛型组件
//使用方式: