Jak dołączyć ikonę Font Awesome do renderowania Reacta ()


105

Ilekroć próbuję użyć ikony Font Awesome w React's render(), nie jest ona wyświetlana na wynikowej stronie internetowej, chociaż działa w normalnym HTML.

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

Oto przykład na żywo: http://jsfiddle.net/pLWS3/

Gdzie jest wina?


3
Zwróć uwagę, że niektóre starsze odpowiedzi odnoszą się do react-fontawesomewersji 4, a niektóre do oficjalnego @fortawesome/fontawesomekomponentu obsługującego wersję 5.
— jinglesthula

A oto aktualny link do react-fontawesome obsługującego wersję 5: github.com/FortAwesome/react-fontawesome
— mojave

Odpowiedzi:


59

React używa classNameatrybutu, podobnie jak DOM.

Jeśli używasz kompilacji deweloperskiej i spojrzysz na konsolę, pojawi się ostrzeżenie. Możesz to zobaczyć na jsfiddle.

Ostrzeżenie: nieznana klasa właściwości DOM. Czy chodziło Ci o className?


czy to możliwe, aby działało responsjs 15.6 dodałem link index.html <link rel = "ikona skrótu" href = " maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/… "> ale nie mogę
— rahuldm

313

Jeśli dopiero zaczynasz przygodę z React JS i używasz polecenia create-react-app cli do tworzenia aplikacji, uruchom następujące polecenie NPM, aby dołączyć najnowszą wersję font-awesome.

npm install --save font-awesome

importuj font-awesome do swojego pliku index.js. Po prostu dodaj poniższą linię do swojego pliku index.js

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

lub

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

Nie zapomnij użyć atrybutu className

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

16
W rzeczywistości jest to odpowiedź, która najlepiej wyjaśnia pierwsze pytanie.
— nacho_dh

20
Chcę tylko zauważyć, że dzięki konfiguracji aplikacji create-react-app nie musisz uwzględniać ../node_modules/w ścieżce ... import 'font-awesome/css/font-awesome.min.css';działa :)
— plong0

2
Ale w ten sposób, kiedy dodajemy ikony takie jak <i className = "far fa-heart"> </i>, nie renderuje się. Ale jeśli dodamy <i className = "fa fa-heart"> </i>, wyrenderuje się. Dlaczego tak jest?
— Thidasa Pankaja

3
Używanie @ThidasaParanavitharana <i className="far fa-heart"></i>działa tylko z font-awesome v5. To rozwiązanie instaluje font-awesome v4
— XeniaSis

33

Możesz także skorzystać z react-fontawesomebiblioteki ikon. Oto link: React-fontawesome

Ze strony NPM wystarczy zainstalować przez npm:

npm install --save react-fontawesome

Wymagaj modułu:

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

Na koniec użyj <FontAwesome />komponentu i przekaż atrybuty, aby określić ikonę i styl:

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)' }}
      />
    );
  }
});

Nie zapomnij dodać niesamowitego CSS do pliku index.html:

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


14
Nie zapomnij również dodać <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">
— pliku

8
czy nadal musisz dołączyć płytę CDN, jeśli instalujesz ją przez npm?
— Amituuush

2
@Amituuush "Instalacja" FA przez NPM (na razie) nie umieszcza go tam, gdzie powinien. Musisz zawsze skopiować go do odpowiedniego publicfolderu i srcręcznie dodać arkusz stylów z poprawnym .
— Domi

4
Nowy link do CDN: <link href = "// maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet">
— guya

4
Autor reakcja-fontawesome tutaj. Będziesz musiał jakoś dołączyć style / czcionki do swojej aplikacji, albo w wersji CDN, albo używając czegoś takiego jak WebPack lub po prostu linkując do pobranych wersji. Celem tej biblioteki było to, aby nie narzucać Ci narzędzia takiego jak WebPack
— Dana Woodman

28

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

zainstaluj fontawesome & respond-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

następnie w swoim komponencie

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;

Czy naprawdę tego potrzebujesz: @fortawesome/fontawesome-free-regularponieważ nie jest to używane z twojego przykładu.
— gmajivu

@gabeno hej nie, to tylko przykład. To powinno po prostu zapamiętać / pokazać, że możesz również użyć drugiego. Ale dzięki za podpowiedź, powinienem dodać komentarz.
— Alexander Sidikov Pfeif

1
Świetny! wystarczy zmodyfikować ten import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'FontAwesomeIcon nie jest już domyślnym eksportem.
— MohitGhodasara

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

w index.js

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

następnie użyj ikon takich jak poniżej:

import React, { Component } from "react";

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

export default Like;

15

Najprostszym rozwiązaniem jest:

Zainstalować:

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

Import:

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

Posługiwać się:

<FontAwesomeIcon icon={ faThumbsUp }/>

6

Najpierw musisz zainstalować pakiet.

npm install --save react-fontawesome

LUB

npm i --save @fortawesome/react-fontawesome

Nie zapomnij użyć classNamezamiast class.

Później musisz zaimportować je do pliku, w którym chcesz ich użyć.

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

lub

import FontAwesomeIcon from '@fortawesome/react-fontawesome'

6

Po pewnym czasie zmagałem się z tym, wymyśliłem tę procedurę (na podstawie dokumentacji Font Awesome tutaj ):

Jak już wspomniano, musisz zainstalować bibliotekę fontawesome , respons-fontawesome i fontawesome icons :

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

a następnie zaimportuj wszystko do swojej aplikacji 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)

Oto trudna część:

Aby zmienić lub dodać ikony, musisz znaleźć dostępne ikony w bibliotece modułów węzła, tj

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

Każda ikona ma dwa odpowiednie pliki: .js i .d.ts, a nazwa pliku wskazuje frazę importu (dość oczywiste ...), więc dodanie ikon gniewu , klejnotów i znaczników wyboru wygląda następująco:

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

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

Aby użyć ikon w kodzie React js, użyj:

<FontAwesomeIcon icon=icon_name/>

Nazwę ikony można znaleźć w pliku .js odpowiedniej ikony:

np. dla faCheckCircle zajrzyj do środka faCheckCircle.js dla zmiennej „ iconName ”:

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

a kod React powinien wyglądać tak:

<FontAwesomeIcon icon=check-circle/> 

Powodzenia!


5

Jeśli chcesz dołączyć niesamowitą bibliotekę czcionek bez konieczności importowania modułów i instalacji npm, umieść to w sekcji head na swojej stronie React index.html :

public / index.html (w sekcji head)

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

Następnie w swoim komponencie (takim jak App.js) użyj po prostu standardowej konwencji klasy awesome font. Pamiętaj tylko, aby użyć className zamiast class:

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


4

Odpowiedź Aleksandra z góry naprawdę mi pomogła!

Próbowałem umieścić ikony kont społecznościowych w stopce mojej aplikacji, którą utworzyłem za pomocą ReactJS, aby móc łatwo dodać do nich stan najechania kursorem, jednocześnie łącząc moje konta społecznościowe. Oto, co musiałem zrobić:

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

Następnie u góry mojego komponentu stopki umieściłem to:

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

Mój komponent wyglądał wtedy tak:

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

Działał jak urok.


4
npm install --save font-awesome

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

następnie

<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

jak powiedział „Praveen MP”, możesz zainstalować font-awesome jako pakiet. jeśli masz włóczkę, możesz biegać:

 yarn add font-awesome

Jeśli nie masz przędzy, zrób tak, jak powiedział Praveen i zrób:

npm install --save font-awesome

spowoduje to dodanie pakietu do zależności projektów i zainstalowanie pakietu w folderze node_modules. w pliku App.js dodaj

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

2

Doświadczyłem tego przypadku; Potrzebuję witryny React / Redux, która powinna działać idealnie na produkcji.

ale istniał „tryb ścisły”; Nie powinienem uruchamiać tego z tymi poleceniami.

yarn global add serve
serve -s build

Powinien działać tylko z kliknięciem pliku build / index.html. Kiedy użyłem fontawesome z npm font-awesome, działał on w trybie programistycznym, ale nie działał w „trybie ścisłym”.

Oto moje rozwiązanie:

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 ***

w public / index.html

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

Po wszystkich powyższych krokach fontawesome działa ŁADNIE !!!



0

W moim przypadku postępowałem zgodnie z dokumentacją react-fontawesomepakietu, ale nie jest jasne, jak wywołać ikonę podczas ustawiania ikon w bibliotece

oto co robiłem:

Plik App.js.

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

Plik komponentu

<FontAwesomeIcon icon={"coffee"} />

Ale otrzymywałem ten błąd

wprowadź opis obrazu tutaj Następnie dodałem alias podczas przekazywania ikony rekwizytu, takiego jak:

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

I działa, możesz znaleźć wartość przedrostka w pliku icon.js, w moim przypadku było to: faCoffee.js


W przypadku pierwszej opcji powinieneś zrobić:<FontAwesomeIcon icon={faCoffee} />
— gildniy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.