我是否必须从导入中重新列出所有React Font Awesome图标并添加到库中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是否必须从导入中重新列出所有React Font Awesome图标并添加到库中?相关的知识,希望对你有一定的参考价值。

library.add函数中重新输入我所有导入的图标似乎很繁琐(并且像一个步枪)。有办法解决这个问题吗?

// font-awesome-library.js

import { library } from '@fortawesome/fontawesome-svg-core'
import {
  faChartBar, faFileAlt, faBalanceScale, faUser, faFutbol, faBuilding,
  faAddressBook, faChartLine, faDatabase, faServer, faLink, faCloudUpload,
  faClipboard, faSlidersH, faChartBar, faUsers
} from '@fortawesome/pro-solid-svg-icons'
import { faFortAwesome} from '@fortawesome/free-brands-svg-icons';

// Re-listing these below seem tedious..
library.add(
  faChartBar, faFileAlt, faBalanceScale, faUser, faFutbol, faBuilding,
  faAddressBook, faChartLine, faDatabase, faServer, faLink, faCloudUpload,
  faClipboard, faSlidersH, faChartBar, faUsers, faFortAwesome, 
);

此外,如果我输入错误(或使用错误的名称,例如faBarChart而不是faChartBar)我在react-fontawesome中得到一个无益的错误:TypeError: Cannot read property 'prefix' of undefined :(

答案

我重构了font-awesome-library.js

// font-awesome-library.js

import { library } from '@fortawesome/fontawesome-svg-core'
import * as icons from './font-awesome-icons';

Object.keys(icons).forEach(key => {
  try {
    library.add(icons[key]);
  } catch (err) {
    console.log(key);
    debugger; // eslint-disable-line
    throw err;
  }
});

并且只需要在font-awesome-icons.js中枚举一次图标:

// font-awesome-icons.js

export {
  faChartBar, faFileAlt, faBalanceScale, faUser, faFutbol, faBuilding,
  faAddressBook, faChartLine, faDatabase, faServer, faLink, faCloudUpload,
  faClipboard, faSlidersH, faChartPie, faUsers
} from '@fortawesome/pro-solid-svg-icons'
export { faFortAwesome} from '@fortawesome/free-brands-svg-icons';

此外,通过将它们作为对象({faChartBar, faFileAlt, /*...*/})导入,我能够确切地知道哪个图标(我尝试导入的图标)被错误地命名,解决了我的另一个问题。

以上是关于我是否必须从导入中重新列出所有React Font Awesome图标并添加到库中?的主要内容,如果未能解决你的问题,请参考以下文章

npx create-react-app 不工作“必须使用导入来加载 ES 模块:” [关闭]

如何在 node.js 中导入 font-awesome 以在 react.js 中使用?

Haskell导出当前模块带有额外的导入模块

从 JavaScript 调试器重新加载 React Native

@font-face 第一次访问网站时不会加载,必须刷新/重新加载

运行脚本以列出每个控件使用的连接管理器