Cách đưa biểu tượng Font Awesome vào render của React ()


99

Bất cứ khi nào tôi cố gắng sử dụng biểu tượng Font Awesome trong React's render() , nó sẽ không được hiển thị trên trang web kết quả mặc dù nó hoạt động trong HTML bình thường.

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

Đây là một ví dụ trực tiếp: http://jsfiddle.net/pLWS3/

Lỗi do đâu?


2
Lưu ý rằng một số câu trả lời cũ hơn đề cập đến react-fontawesomeđó là v4 và một số đề cập đến @fortawesome/fontawesomethành phần chính thức hỗ trợ v5.
jinglesthula

Và đây là liên kết hiện tại để các phản ứng-fontawesome mà hỗ trợ phiên bản 5: github.com/FortAwesome/react-fontawesome
Mojave

Câu trả lời:


57

React sử dụng className thuộc tính, như DOM.

Nếu bạn sử dụng bản dựng phát triển và nhìn vào bảng điều khiển, sẽ có một cảnh báo. Bạn có thể thấy điều này trên jsfiddle.

Cảnh báo: Lớp thuộc tính DOM không xác định. Ý của bạn là className?


có thể hoạt động reactjs 15.6 không, tôi đã thêm link index.html <link rel = "shortcut icon" href = " maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/… "> nhưng không thể hoạt động
rahuldm

300

Nếu bạn chưa quen với React JS và sử dụng lệnh cli của create-react-app để tạo ứng dụng, thì hãy chạy lệnh NPM sau để bao gồm phiên bản font-awesome mới nhất.

npm install --save font-awesome

nhập phông chữ tuyệt vời vào tệp index.js của bạn. Chỉ cần thêm dòng dưới đây vào tệp index.js của bạn

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

hoặc là

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

Đừng quên sử dụng className làm thuộc tính

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

15
Đây thực sự là câu trả lời làm rõ nhất câu hỏi ban đầu.
nacho_dh 17/07/17

18
Chỉ muốn lưu ý rằng với thiết lập tạo-phản ứng-ứng dụng , bạn không cần phải đưa ../node_modules/vào đường dẫn ... import 'font-awesome/css/font-awesome.min.css';hoạt động :)
plong0

2
Nhưng theo cách này khi chúng tôi thêm các biểu tượng như <i className = "far fa-heart"> </i>, nó không hiển thị. Nhưng nếu chúng ta thêm <i className = "fa fa-heart"> </i> thì nó sẽ hiển thị. Tại sao vậy?
Thidasa Pankaja

3
@ThidasaParanavitharana sử dụng <i className="far fa-heart"></i>chỉ hoạt động với font-awesome v5. Giải pháp này cài đặt font-awesome v4
XeniaSis 5:18

33

Bạn cũng có thể sử dụng react-fontawesomethư viện biểu tượng. Đây là liên kết: react-fontawesome

Từ trang NPM, chỉ cần cài đặt qua npm:

npm install --save react-fontawesome

Yêu cầu mô-đun:

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

Và cuối cùng, sử dụng <FontAwesome />thành phần và chuyển vào các thuộc tính để chỉ định biểu tượng và kiểu dáng:

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

Đừng quên thêm CSS có phông chữ tuyệt vời vào index.html:

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


14
Đừng quên để thêm ô Awesome css Font để chỉ mục của bạn quá:<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">
sdgfsdh

8
bạn vẫn cần bao gồm cdn nếu bạn cài đặt nó qua npm?
Amituuush

2
@Amituuush "Cài đặt" FA qua NPM (hiện tại) không đặt nó ở vị trí cần thiết. Bạn phải luôn đảm bảo sao chép nó vào publicthư mục tương ứng của mình và thêm biểu định kiểu với đúng srctheo cách thủ công.
Domi

4
Liên kết CDN mới: <link href = "// maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel = "stylesheet">
guya

4
Tác giả của react-fontawesome ở đây. Bạn sẽ cần phải bao gồm các kiểu / phông chữ trong ứng dụng của mình bằng cách nào đó, với phiên bản CDN hoặc sử dụng một cái gì đó như WebPack hoặc chỉ liên kết đến các phiên bản đã tải xuống. Mục tiêu của thư viện này là không ép buộc bạn sử dụng một công cụ như WebPack
Dana Woodman

27

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

cài đặt 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

sau đó trong thành phần của bạn

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;

Bạn có thực sự cần điều này không: @fortawesome/fontawesome-free-regularvì nó không được sử dụng từ ví dụ của bạn.
gmajivu

@gabeno hey nope, nó chỉ là một ví dụ. Điều này chỉ nên nhớ / cho bạn thấy rằng bạn cũng có thể sử dụng cái kia. Nhưng thx cho gợi ý, tôi nên thêm một nhận xét.
Alexander Sidikov Pfeif

1
Tuyệt quá! chỉ cần sửa đổi import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'FontAwesomeIcon này không phải là xuất mặc định nữa.
MohitGhodasara

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

trong index.js

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

sau đó sử dụng các biểu tượng như dưới đây:

import React, { Component } from "react";

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

export default Like;

13

Giải pháp đơn giản nhất là:

Tải về:

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

Nhập khẩu:

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

Sử dụng:

<FontAwesomeIcon icon={ faThumbsUp }/>

5

Bạn cần cài đặt gói trước.

npm install --save react-fontawesome

HOẶC LÀ

npm i --save @fortawesome/react-fontawesome

Đừng quên sử dụng classNamethay vìclass .

Sau này, bạn cần nhập chúng vào tệp mà bạn muốn sử dụng chúng.

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

hoặc là

import FontAwesomeIcon from '@fortawesome/react-fontawesome'

5

Sau khi vật lộn với điều này một lúc, tôi đã nghĩ ra quy trình này (dựa trên tài liệu của Font Awesome ở đây ):

Như đã trình bày, bạn sẽ phải cài đặt fontawesome , phản ứng-fontawesomefontawesome các biểu tượng thư viện :

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

và sau đó nhập mọi thứ vào ứng dụng React của bạn:

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

library.add(faStroopwafel)

Đây là phần khó khăn:

Để thay đổi hoặc thêm các biểu tượng, bạn sẽ phải tìm các biểu tượng có sẵn trong thư viện mô-đun nút của mình, tức là

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

Mỗi biểu tượng có hai tệp có liên quan: .js và .d.ts, và tên tệp cho biết cụm từ nhập (khá rõ ràng ...), do đó, việc thêm các biểu tượng giận dữ , đá quýdấu kiểm sẽ giống như sau:

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

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

Để sử dụng các biểu tượng trong mã React js của bạn, hãy sử dụng:

<FontAwesomeIcon icon=icon_name/>

Bạn có thể tìm thấy tên biểu tượng trong tệp .js của biểu tượng có liên quan:

ví dụ: đối với faCheckCircle, hãy tìm bên trong faCheckCircle.js cho biến ' iconName ':

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

và mã React sẽ giống như sau:

<FontAwesomeIcon icon=check-circle/> 

Chúc may mắn!


3

Câu trả lời của Alexander từ trên thực sự đã giúp tôi!

Tôi đang cố gắng lấy các biểu tượng tài khoản xã hội ở chân trang của ứng dụng mà tôi đã tạo bằng ReactJS để tôi có thể dễ dàng thêm trạng thái di chuột vào chúng đồng thời để chúng liên kết các tài khoản xã hội của tôi. Đây là những gì tôi phải làm:

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

Sau đó, ở đầu thành phần chân trang của tôi, tôi bao gồm cái này:

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

Thành phần của tôi sau đó trông như thế này:

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

Làm việc như người ở.


3

Trong trường hợp bạn đang tìm cách bao gồm thư viện phông chữ tuyệt vời mà không cần phải nhập mô-đun và cài đặt npm, hãy đặt nó vào phần đầu của trang React index.html :

public / index.html (trong phần đầu)

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

Sau đó, trong thành phần của bạn (chẳng hạn như App.js) chỉ cần sử dụng quy ước lớp tuyệt vời phông chữ tiêu chuẩn. Chỉ cần nhớ sử dụng className thay vì class:

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


3
npm install --save font-awesome

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

sau đó

<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

Tôi đã trải qua trường hợp này; Tôi cần trang web react / redux sẽ hoạt động hoàn hảo trong quá trình sản xuất.

nhưng có một 'chế độ nghiêm ngặt'; Không nên ăn trưa nó bằng những lệnh này.

yarn global add serve
serve -s build

Sẽ làm việc với chỉ nhấp vào tệp build / index.html. Khi tôi sử dụng fontawesome với npm font-awesome, nó đang hoạt động ở chế độ phát triển nhưng không hoạt động ở 'chế độ nghiêm ngặt'.

Đây là giải pháp của tôi:

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

trong public / index.html

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

Sau tất cả các bước trên, fontawesome hoạt động KHÔNG NGẠI !!!


1

như 'Praveen MP' đã nói bạn có thể cài đặt phông chữ tuyệt vời dưới dạng một gói. nếu bạn có sợi, bạn có thể chạy:

 yarn add font-awesome

Nếu bạn không có sợi, hãy làm như Praveen đã nói và hãy làm:

npm install --save font-awesome

điều này sẽ thêm gói vào các phụ thuộc dự án của bạn và cài đặt gói trong thư mục node_modules của bạn. trong tệp App.js của bạn, hãy thêm

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


0

Trong trường hợp của tôi, tôi đã làm theo tài liệu về react-fontawesomegói, nhưng họ không rõ về cách gọi biểu tượng khi đặt các biểu tượng vào thư viện

đây là những gì tôi đã làm:

Tệp app.js

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

Tệp thành phần

<FontAwesomeIcon icon={"coffee"} />

Nhưng tôi đã gặp lỗi này

nhập mô tả hình ảnh ở đây Sau đó, tôi đã thêm bí danh khi chuyển biểu tượng chống đỡ như:

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

Và nó đang hoạt động, bạn có thể tìm thấy giá trị tiền tố trong tệp icon.js, trong trường hợp của tôi là: faCoffee.js


Đối với tùy chọn đầu tiên, bạn nên thực hiện:<FontAwesomeIcon icon={faCoffee} />
gildniy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.