Reactjs 导入图标会动态地对其进行响应

Reactjs 导入图标会动态地对其进行响应,reactjs,icons,font-awesome,Reactjs,Icons,Font Awesome,我在react js项目中使用FontawesomeIcon,图标的名称来自数据库。我想从@fortawesome/free solid svg图标动态导入来自数据库的图标 import React, { Component } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import {faImage} from "@fortaw

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

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;
只需将CDN添加到您的HTML标题中,并使用您想要的任何图标

在react中可能是这样的:

Object.ico应该是一个包含图标名的字符串,比如far fa xyz

只需将CDN添加到HTML标题中,并使用任何您想要的图标

在react中可能是这样的:


Object.ico应该是一个包含图标名称的字符串,如App.js中的far fa xyz,您可以导入所有图标,如中所示,如下所示:

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);
然后,在组件内部,仅导入FontAwesomeIcon并使用它们:

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

<FontAwesomeIcon icon="times" />
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'

<FontAwesomeIcon icon={['fab', 'apple']} /> // any icon from Brand.
<FontAwesomeIcon icon={['fas', 'coffee']} /> // any icon from Solid.

在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);
然后,在组件内部,仅导入FontAwesomeIcon并使用它们:

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

<FontAwesomeIcon icon="times" />
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'

<FontAwesomeIcon icon={['fab', 'apple']} /> // any icon from Brand.
<FontAwesomeIcon icon={['fas', 'coffee']} /> // any icon from Solid.

实际上,有一种更好的方法不必迭代所有图标@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)
并使用它们:

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

<FontAwesomeIcon icon="times" />
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'

<FontAwesomeIcon icon={['fab', 'apple']} /> // any icon from Brand.
<FontAwesomeIcon icon={['fas', 'coffee']} /> // any icon from Solid.

实际上,有一种更好的方法不必迭代所有图标@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)
并使用它们:

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

<FontAwesomeIcon icon="times" />
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'

<FontAwesomeIcon icon={['fab', 'apple']} /> // any icon from Brand.
<FontAwesomeIcon icon={['fas', 'coffee']} /> // any icon from Solid.

但是我想使用@fortawesome/react-fontawesome软件包,我不想使用任何cdn并将其放在html中,最好在您的项目中有软件包,但我想使用@fortawesome/react-fontawesome软件包,我不想使用任何cdn并将其放在html中,最好在您的项目中有软件包谢谢您的回答,我想使用的图标名称是未知的,它们来自对数据库的请求,因此这种方式不会出现work@AmmarIsmaeel请查看我编辑的关于如何导入所有图标的帖子,虽然我不喜欢导入所有图标,这似乎是唯一的选择solution@AmmarIsmaeel动态地一个接一个地导入它们会有更大的问题,因为这个过程是异步的。如果一开始就全部导入,应该不会有问题。谢谢你的回答,我想使用的图标名称是未知的,它们来自对数据库的请求,因此这种方式不会出现问题work@AmmarIsmaeel请查看我编辑的帖子,了解如何导入所有这些iconsThx,它起作用了,虽然我不喜欢导入所有图标的想法,但这似乎是唯一的选择solution@AmmarIsmaeel动态地一个接一个地导入它们会有更大的问题,因为这个过程是异步的。如果一开始就将它们全部导入,应该不会有问题。