Як включити значок Awesome Font у візуалізацію React ()


99

Кожен раз, коли я намагаюся використовувати піктограму Awesome Font у React render(), вона не відображається на отриманій веб-сторінці, хоча вона працює у звичайному HTML.

render: function() {
    return <div><i class="fa fa-spinner fa-spin">no spinner but why</i></div>;
}

Ось живий приклад: http://jsfiddle.net/pLWS3/

Де вина?


2
Зауважте, що деякі старі відповіді стосуються версії react-fontawesomev4, а деякі - офіційного @fortawesome/fontawesomeкомпонента, який підтримує v5.
jinglesthula

А ось поточне посилання на реагувати на джерело, яке підтримує версію 5: github.com/FortAwesome/react-fontawesome
mojave

Відповіді:


57

React використовує classNameатрибут, як DOM.

Якщо ви використовуєте версію розробки та дивитесь на консоль, з’являється попередження. Ви можете побачити це на jsfiddle.

Попередження: Невідомий клас властивостей DOM. Ви мали на увазі className?


чи можливо це працювати reactjs 15.6 я додав посилання index.html <link rel = "ярлик ярлика" href = " maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/… "> але не можу працювати
rahuldm

300

Якщо ви новачок у React JS та використовуєте команду create-react-app cli для створення програми, виконайте наступну команду NPM, щоб включити останню версію font-awesome.

npm install --save font-awesome

імпортувати шрифтові файли у файл index.js. Просто додайте нижній рядок у файл index.js

import '../node_modules/font-awesome/css/font-awesome.min.css'; 

або

import 'font-awesome/css/font-awesome.min.css';

Не забудьте використовувати атрибут className

 render: function() {
    return <div><i className="fa fa-spinner fa-spin">no spinner but why</i></div>;
}

15
Це насправді відповідь, яка найкраще прояснює початкове питання.
nacho_dh

18
Просто хочу зазначити, що при налаштуванні програми create-../node_modules/import 'font-awesome/css/font-awesome.min.css';
react

2
Але таким чином, коли ми додаємо піктограми типу <i className = "far fa-heart"> </i>, це не відображається. Але якщо ми додамо <i className = "fa fa-heart"> </i> це відображається. Чому це ?
Thidasa Pankaja

3
@ThidasaParanavitharana використовує <i className="far fa-heart"></i>лише твори з дивним шрифтом v5. Це рішення встановлює шрифтовий дивовижний v4
XeniaSis

33

Ви також можете використовувати react-fontawesomeбібліотеку іконок. Ось посилання: реагувати-приємно

На сторінці NPM просто встановіть через npm:

npm install --save react-fontawesome

Потрібен модуль:

var FontAwesome = require('react-fontawesome');

І, нарешті, використовуйте <FontAwesome />компонент та передайте атрибути, щоб вказати піктограму та стиль:

var MyComponent = React.createClass({
  render: function () {
    return (
      <FontAwesome
        className='super-crazy-colors'
        name='rocket'
        size='2x'
        spin
        style={{ textShadow: '0 1px 0 rgba(0, 0, 0, 0.1)' }}
      />
    );
  }
});

Не забудьте додати приголомшливий шрифт CSS до index.html:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">


14
Не забудьте також додати свій індекс css Font Awesome:<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">
sdgfsdh

8
вам все-таки потрібно включити cdn, якщо встановити його через npm?
Амітууш

2
@Amituuush "Встановлення" FA через NPM (поки що) не ставить його там, де треба. Ви завжди повинні скопіювати її у відповідну publicпапку та додати таблицю стилів із потрібною srcвручну.
Домі

4
Нове посилання CDN: <link href = "// maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "
styleheet

4
Автор тут реагує чудово. Вам потрібно буде якось включати стилі / шрифти у свою програму, або з версією CDN, або використовуючи щось на зразок WebPack або просто посилаючись на завантажені версії. Мета цієї бібліотеки полягала в тому, щоб не накладати на вас інструмент, як WebPack
Dana Woodman

28

https://github.com/FortAwesome/react-fontawesome

встановити fontawesome & react-fontawesome

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

то у своєму компоненті

import React, { Component } from 'react';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faCheckSquare, faCoffee } from '@fortawesome/fontawesome-free-solid'
import './App.css';

class App extends Component {
  render() {
    return (
      <div className="App">
        <h1>
          <FontAwesomeIcon icon={faCoffee} />
        </h1>
      </div>
    );
  }
}

export default App;

Вам справді це потрібно: @fortawesome/fontawesome-free-regularяк це не використовується з вашого прикладу.
gmajivu

@gabeno hey nope, це просто приклад. Це слід просто пам'ятати / показувати, що і ви можете використовувати інший. Але thx для підказки, я повинен додати коментар.
Олександр Сидіков Пфайф

1
Чудово! просто потрібно змінити цей import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'FontAwesomeIcon більше не є експортом за замовчуванням.
MohitGhodasara

16
npm install --save-dev @fortawesome/fontawesome-free

в index.js

import '@fortawesome/fontawesome-free/css/all.min.css';

потім використовуйте значки, як показано нижче:

import React, { Component } from "react";

class Like extends Component {
  state = {};
  render() {
    return <i className="fas fa-heart"></i>;
  }
}

export default Like;

13

Найпростіше рішення:

Встановити:

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

Імпорт:

import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faThumbsUp } from '@fortawesome/free-solid-svg-icons';

Використання:

<FontAwesomeIcon icon={ faThumbsUp }/>

5

Потрібно спочатку встановити пакет.

npm install --save react-fontawesome

АБО

npm i --save @fortawesome/react-fontawesome

Не забудьте використовувати classNameзамість цього class.

Пізніше вам потрібно імпортувати їх у файл, де ви хочете їх використовувати.

import 'font-awesome/css/font-awesome.min.css'

або

import FontAwesomeIcon from '@fortawesome/react-fontawesome'

5

Після деякого бою з цим я придумав цю процедуру (на основі документації на шрифт Awesome тут ):

Як зазначено, вам доведеться встановити бібліотеку значків fontawesome , react-fontawesome та fontawesome :

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

а потім імпортувати все до вашої програми React:

import { library } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faStroopwafel } from '@fortawesome/free-solid-svg-icons'

library.add(faStroopwafel)

Ось така складна частина:

Щоб змінити або додати піктограми, вам доведеться знайти наявні значки в бібліотеці модулів вузлів, тобто

<your_project_path>\node_modules\@fortawesome\free-solid-svg-icons  

Кожна піктограма має два відповідні файли: .js та .d.ts, а ім'я файлу вказує фразу імпорту (досить очевидно ...), тому додавання значків гніву , коштовності та галочки виглядає приблизно так:

import { faStroopwafel, faAngry, faGem, faCheckCircle } from '@fortawesome/free-solid-svg-icons'

library.add(faStroopwafel, faAngry, faGem, faCheckCircle)

Для використання піктограм у коді React js використовуйте:

<FontAwesomeIcon icon=icon_name/>

Ім'я піктограми можна знайти у відповідному файлі .js відповідного значка:

наприклад, для прогляду faCheckCircle всередині faCheckCircle.js для змінної ' iconName ':

...
var iconName = 'check-circle'; 
... 

і код React повинен виглядати так:

<FontAwesomeIcon icon=check-circle/> 

Удачі!


3

Відповідь Олександра згори справді допомогла мені!

Я намагався отримати піктограми соціальних акаунтів у нижній частині нижнього колонтитулу свого додатка, який я створив із ReactJS, щоб я міг легко додати до них стан наведення, а також пов'язуючи мої соціальні акаунти. Ось що я закінчив робити:

$ npm i --save @fortawesome/fontawesome-free-brands

Потім у верхній частині компонента колонтитулу я включив це:

import React from 'react';
import './styles/Footer.css';
import FontAwesomeIcon from '@fortawesome/react-fontawesome';
import {faTwitter, faLinkedin, faGithub} from '@fortawesome/fontawesome-free-brands';

Тоді мій компонент виглядав так:

<a href='https://github.com/yourusernamehere'>
  <FontAwesomeIcon className ='font-awesome' icon={faGithub} />
</a>

Працював як шарм.


3

Якщо ви хочете включити дивовижну бібліотеку шрифтів без необхідності імпорту модуля та встановлення npm, покладіть це в головний розділ вашої сторінки React index.html :

public / index.html (у головному розділі)

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/>

Тоді у своєму компоненті (наприклад, App.js) просто використовуйте стандартну конвенцію класу шрифтів. Просто пам’ятайте, щоб використовувати className замість класу:

<button className='btn'><i className='fa fa-home'></i></button>


3
npm install --save font-awesome

import 'font-awesome/css/font-awesome.min.css';

тоді

<i className="fa fa-shopping-cart" style={{fontSize:24}}></i>  
        <span className="badge badge-danger" style={{position:"absolute", right:5, top:5}}>number of items in cart</span>

2

Я пережив цей випадок; Мені потрібен сайт для реагування / редукції, який повинен чудово працювати у виробництві.

але був "суворий режим"; Не слід обідати його цими командами.

yarn global add serve
serve -s build

Потрібно працювати лише з файлом build / index.html. Коли я використовував fontawesome з шрифтом npm-awesome, він працював у режимі розробки, але не працював у «суворому режимі».

Ось моє рішення:

public/css/font-awesome.min.css
public/fonts/font-awesome.eot 
*** other different types of files(4) ***
*** I copied these files for node_module/font-awesome ***
*** after copied then can delete the font-awesome from package.json ***

у public / index.html

<link rel="stylesheet" href="%PUBLIC_URL%/css/font-awesome.min.css">

Після всіх вищезазначених кроків, приємний працює НІКОЛЬНО !!!


1

як "Praveen MP" сказав, що ви можете встановити шрифт-awesome як пакет. якщо у вас є пряжа, ви можете запустити:

 yarn add font-awesome

Якщо у вас немає пряжі, виконайте так, як сказав Правен:

npm install --save font-awesome

це додасть пакунок до залежностей ваших проектів та встановить його у папку node_modules. у вашому файлі App.js додати

import 'font-awesome/css/font-awesome.min.css'


0

У моєму випадку я слідкував за документацією щодо react-fontawesomeпакету, але їм не зрозуміло, як викликати піктограму під час встановлення піктограм у бібліотеку

ось що я робив:

Файл App.js

import {faCoffee} from "@fortawesome/pro-light-svg-icons";
library.add(faSearch, faFileSearch, faCoffee);

Файл компонента

<FontAwesomeIcon icon={"coffee"} />

Але я отримував цю помилку

введіть тут опис зображення Тоді я додав псевдонім при передачі опорної іконки, наприклад:

<FontAwesomeIcon icon={["fal", "coffee"]} />

І він працює, ви можете знайти префікс у файлі icon.js, у моєму випадку: faCoffee.js


Для першого варіанту вам слід зробити:<FontAwesomeIcon icon={faCoffee} />
gildniy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.