导入图标动态反应 fontawesome

Amm*_*eel 1 icons font-awesome reactjs

我在 react js 项目中使用 FontawesomeIcon,图标的名称来自数据库。我想从@fortawesome/free-solid-svg-icons 动态导入来自数据库的图标

import React, { Component } from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import {faImage} from "@fortawesome/free-solid-svg-icons";

export class Features extends Component {
  render() {
    return (
      <div id="features" className="text-center">
        <div className="container-fluid">
          <div className="features-listing">
            {this.props.data.map((item, index) => (
              <div key={`${index}`}>
                {" "}
                <FontAwesomeIcon icon={item.icon} />
                <h3>{item.title}</h3>
              </div>
            ))}
          </div>
        </div>
      </div>
    );
  }
}

export default Features;
Run Code Online (Sandbox Code Playgroud)

And*_*der 14

实际上有一种更好的方法,无需迭代所有图标(@Andrei Rosu 的解决方案),您可以导出整个品牌实体包:

import { library } from '@fortawesome/fontawesome-svg-core'
import { fab } from '@fortawesome/free-brands-svg-icons'
import { fas } from '@fortawesome/free-solid-svg-icons'

// This exports the whole icon packs for Brand and Solid.
library.add(fab, fas)
Run Code Online (Sandbox Code Playgroud)

并使用它们:

import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'

<FontAwesomeIcon icon={['fab', 'apple']} /> // any icon from Brand.
<FontAwesomeIcon icon={['fas', 'coffee']} /> // any icon from Solid.
Run Code Online (Sandbox Code Playgroud)


And*_*osu 5

在App.js,你可以导入所有的图标,在看到这篇文章,就像这样:

import {library} from '@fortawesome/fontawesome-svg-core';
import * as Icons from '@fortawesome/free-solid-svg-icons';

const iconList = Object.keys(Icons)
  .filter((key) => key !== 'fas' && key !== 'prefix')
  .map((icon) => Icons[icon]);

library.add(...iconList);
Run Code Online (Sandbox Code Playgroud)

然后,在组件内部,只导入 FontAwesomeIcon 并使用它们:

import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';

<FontAwesomeIcon icon="times" />
Run Code Online (Sandbox Code Playgroud)