【问题标题】:Cound not find icon react-fontawesome找不到图标 react-fontawesome
【发布时间】:2018-06-08 17:09:25
【问题描述】:

我有一个关于 React 的项目,我需要将 FontAwesome 集成到其中。我找到了官方的library,按照自述文件的说明安装了

$ npm i --save @fortawesome/fontawesome
$ npm i --save @fortawesome/react-fontawesome

当我尝试在我的代码中使用它时:

<FontAwesomeIcon icon='plus'/>
<FontAwesomeIcon icon={['fa', 'coffee']}/>

我在控制台上收到此错误:

Could not find icon {prefix: "fas", iconName: "plus"}
Could not find icon {prefix: "fa", iconName: "coffee"}

我尝试将 FontAwesome css 链接包含在 head 中,但没有帮助。我正在使用npm v4.6.1node v8.9.1; react v16.2.

【问题讨论】:

    标签: reactjs font-awesome


    【解决方案1】:

    您需要将任何想要使用的图标添加到“库”中以便于参考。

    import React from 'react';
    import { render } from 'react-dom';
    import Hello from './Hello';
    import fontawesome from '@fortawesome/fontawesome'
    import FontAwesomeIcon from '@fortawesome/react-fontawesome';
    import { faCheckSquare, faCoffee } from '@fortawesome/fontawesome-free-solid'
    
    const styles = {
      fontFamily: 'sans-serif',
      textAlign: 'center',
    };
    
    fontawesome.library.add(faCheckSquare, faCoffee);
    
    const App = () => (
      <div style={styles}>
        <FontAwesomeIcon icon="check-square" /><br /><br />
        <FontAwesomeIcon icon="coffee" />
      </div>
    );
    
    render(<App />, document.getElementById('root'));
    

    在此处查看工作代码: https://codesandbox.io/s/8y251kv448

    另外,请阅读以下内容: https://www.npmjs.com/package/@fortawesome/react-fontawesome#build-a-library-to-reference-icons-throughout-your-app-more-conveniently

    【讨论】:

    • 仅添加 import @fortawesome/fontawesome-free-solid 语句有帮助,但 react-fontawesome 演示中没有导入
    • 同时fortawesome/fontawesome npm package 已被弃用。将有助于调整上面的代码。
    • 我的错!我也在用骆驼大小写图标的价值,即faCheckSquare
    • 我的错误是不必要的import {faSync} from ... @fortawesome... 尽管使用了FontAwesome icon="sync" /&gt;标签
    【解决方案2】:

    以防万一还有其他像我一样的白痴,请确保在引用图标时使用正确的名称。

    我有

    import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
    import { library } from "@fortawesome/fontawesome-svg-core";
    import { faUser } from "@fortawesome/free-solid-svg-icons";
    
    library.add(faUser);
    

    render() {
      return (        
        <FontAwesomeIcon icon="faUser" />
      );
    }
    

    实际上,实际的图标名称只是“user”,而不是“faUser”:

    render() {
      return (        
        <FontAwesomeIcon icon="user" />
      );
    }
    

    【讨论】:

    • 有趣的是我打电话给&lt;FontAwesomeIcon icon="circle" /&gt; 并添加了fontawesome.library.add(faCoffee)(在import { faCoffee } from '...' 之后)并且它起作用了,我得到了圆圈图标。但是,如果我不向库中添加任何内容,则什么都行不通。
    • 很抱歉,但公司在做什么“见鬼”?在我读过的任何他们的文档中都没有提到你必须调用库添加,才能使图标可用......这是添加图标的简单任务,而且他们设法做到了非常复杂。很抱歉把它写在你的解决方案下面,但我很困惑......谢谢你的解决方案。
    • @tikej,我也对此感到困惑。就像公司内部到底有谁以这种方式编写了图书馆?我们为了获得一个图标而添加的模式和不必要的代码行太奇怪了。
    • 显然,这似乎有效:javascript import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faHome } from "@fortawesome/free-solid-svg-icons"; &lt;FontAwesomeIcon icon={faHome} /&gt;
    【解决方案3】:

    如果您在尝试显示 faTrashAlt(或类似名称的图标)时发现自己没有看到您的图标,那么您不仅需要在实际使用图标时删除“fa”,而且您必须将图标名称从 cameCase 转换为“lisp-case”。

    因此,以这种方式加载备用垃圾桶图标后:

    fontawesome.library.add(faTrashAlt);
    

    然后以这种方式使用:

    <FontAwesomeIcon icon="trash-alt" />
    

    只是为了不浪费您宝贵的 20 分钟时间。

    【讨论】:

      【解决方案4】:

      你可以像这样使用没有库的 FontAwesome 图标:

      import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
      import { faCoffee } from '@fortawesome/free-solid-svg-icons'
      
      <FontAwesomeIcon icon={faCoffee} />
      

      正如react-fontawesome 所说,我已经安装了所有必要的软件包:

      $ npm i --save @fortawesome/fontawesome-svg-core
      $ npm i --save @fortawesome/free-solid-svg-icons
      $ npm i --save @fortawesome/react-fontawesome
      

      【讨论】:

        【解决方案5】:

        仅仅因为将 fontawesome 图标导入网站的方法不止一种,我将举一个 react 和 fontawesome 以及显式导入的示例。显式导入是节俭的。仅导入 fontawesome 图标集中的确切图标,并将 FontAwesomeIcon 组件图标属性设置为导入的对象而不是名称。

        例子:

        import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
        import { faCoffee } from '@fortawesome/free-solid-svg-icons';
        import { faHistory } from '@fortawesome/pro-regular-svg-icons';
        
        function exampleReactComponent() {
           return (
             <div>
               <p><FontAwesomeIcon icon={faCoffee}/></p>
               <p><FontAwesomeIcon icon={faHistory}/></p>
             </div>
           );
        }
        

        我不反对按名称设置 FontAwesomeIcon 的图标属性,只是我遇到了有关按名称查找图标的控制台错误,而我发现的解决方案是引用该对象。请注意 icon={} 表示法,因为它与使用带引号的图标名称字符串不同。

        显式导入... react-fontawesome npm package github link

        正在使用 npm 安装... installing fontawesome with npm link

        【讨论】:

          【解决方案6】:

          使用这样的数组传递图标路径

          icon={['fa', '咖啡']}

          您需要在一个文件中导入该库的所有引用,并将该文件导入您的 React 应用程序的索引中。

          例如,创建名为 fonts.js 的文件

          import { library } from '@fortawesome/fontawesome-svg-core';
          import { fas } from '@fortawesome/pro-solid-svg-icons';
          import { far } from '@fortawesome/pro-regular-svg-icons';
          import { fal } from '@fortawesome/pro-light-svg-icons';
          import { fad } from '@fortawesome/pro-duotone-svg-icons';
          import { fab } from '@fortawesome/free-brands-svg-icons';
          
          library.add(fab);
          library.add(fas);
          library.add(far);
          library.add(fal);
          library.add(fad);
          

          现在在您应用的 index.js 中导入创建的文件,

          import '../configs/fonts.js'
          

          此路径只是一个示例,请确保您放置正确的路径。

          【讨论】:

            猜你喜欢
            • 2021-08-08
            • 2017-07-20
            • 2021-07-06
            • 2018-12-14
            • 1970-01-01
            • 1970-01-01
            • 2014-05-17
            • 2021-11-13
            • 2020-12-06
            相关资源
            最近更新 更多