从变量中设置 fontawesome 图标 - 反应

Posted

技术标签:

【中文标题】从变量中设置 fontawesome 图标 - 反应【英文标题】:Set fontawesome icon from a variable - react 【发布时间】:2021-11-27 04:50:21 【问题描述】:

我正在构建一个反应应用程序:

"react": "^16.0.0",

集成了很棒的字体。

"@fortawesome/fontawesome-svg-core": "^1.2.36",
"@fortawesome/free-brands-svg-icons": "^5.15.4",
"@fortawesome/free-solid-svg-icons": "^5.15.4",
"@fortawesome/react-fontawesome": "^0.1.15",

在一个组件中,我想从另一个 JSON 文件中的 const 设置一个图标,但没有变量它看起来像这样:

<FontAwesomeIcon icon=Brand_icons.faJava size="6x" transform="shrink-6"/>

我已经导入了 FontAwesomeIcon 和其他类似的库:

import  FontAwesomeIcon  from '@fortawesome/react-fontawesome';
import * as Brand_icons from '@fortawesome/free-brands-svg-icons';

这是我的常量,我想循环设置这些图标名称:

const skills = [
  "faJava",
  "faPython",
  "faJsSquare",
  "faReact",
  "faphp"
];

这是我用来获取这些图标的循环:

skills.map((skill, index) => (
  <div>
    <FontAwesomeIcon icon=Brand_icons.faJava size="6x" transform="shrink-6"/>
  </div>
))

我想从技能变量而不是 faJava 中设置值。我该怎么做?

【问题讨论】:

【参考方案1】:

FontAwesome 已经从包含所有图标的 '@fortawesome/free-brands-svg-icons' 导出 fab

您可以像这样更改导入:

import  fab as brandIcons  from '@fortawesome/free-brands-svg-icons';

然后像这样改变渲染:

skills.map(skill => (
        <FontAwesomeIcon key=skill icon=brandIcons[skill] size="6x" transform="shrink-6" />
))

【讨论】:

【参考方案2】:

您可以在 js 中使用模板文字来完成上述任务。

skills.map((skill, index) => (
  <div>
    <FontAwesomeIcon icon=`$Brand_icons.$skill` size="6x" transform="shrink-6"/>
  </div>
))

【讨论】:

现在图标不显示了。打印时,错误是找不到图标【参考方案3】:

如果 Brand_icons 是一个数组并且您正在循环技能,则道具图标应等于:icon=Brand_icons[skill]

【讨论】:

Brand_icons 是一个模块,使用它返回一个对象,而不是字体图标【参考方案4】:

我已将我的 const 更改为:

const skills = [
  Brand_icons.faJava,
  Brand_icons.faPython,
  Brand_icons.faJsSquare,
  Brand_icons.fahtml5,
  Brand_icons.faCss3Alt,
  Brand_icons.faPhp,
];

然后调用变量:

<FontAwesomeIcon icon=skill size="6x" transform="shrink-6"/>

【讨论】:

以上是关于从变量中设置 fontawesome 图标 - 反应的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 github 自述文件中设置 pyversions 图标?

如何在 XCode 5 中设置应用程序图标?

如何在 Xamarin 表单中设置工具栏项的图标

jQuery 和 ajax 在 PHP 中设置会话变量

如何在从 javascript 传递的 flash (swf) 中设置动态变量?

怎样在Ubuntu中设置环境变量