3-8 使用 React FontAwesome
本單元對應的專案分支為:apply-react-font-awesome
。
現在我們已經完成了網速單位換算器的所有功能,最後我們要來完成一開始沒有處理的圖示部分。在這個專案中,圖示都是來自 FontAwesome 這套工具,這套工具提供許多圖示給網頁開發者使用,其中部分圖示是免費的,部分則需要額外付費,而在這個專案中只會使用到免費的圖示。
為什麼會需要等到講完元件的部分後才來實作圖示的功能呢?這是因為這裡使用的 FontAwesome 是專門寫給 React 使用的,因此已經包裝成元件的形式可以直接套用,現在就讓我們來完成圖示的部分吧!
#
安裝 React FontAwesome這裡我們會使用 Node.js 的套件管理工具(Node Package Manager)來要安裝 Font Awesome 到專案當中,只需要 VS Code 的終端機中下述指令即可完成安裝:
小提醒
這裡雖然名稱是 font
awesome,但它是放在 @fort
awesome 這裡面,你並沒有拼錯字喔!
這裡你會發現要使用 React FontAwesome 這個工具一共需要安裝 5 個對應的套件:
- 其中
fortawesome/fontawesome-svg-core
和@fortawesome/react-fontawesome
算是把 FontAwesome 變成 React 元件加以使用的核心部分。 - 其餘的三個
@fortawesome/free-regular-svg-icons
、@fortawesome/free-brands-svg-icons
和@fortawesome/free-solid-svg-icons
則是 FontAwesome 將所有圖示分成三類,分別是 regular、brands 和 solid 這三類。
#
React FontAwesome 的使用#
註冊 React FontAwesome 中會用到的圖示這裡我們會用 FontAwesome 提供的最基本功能,也就是顯示圖示的部分。使用時會需要在最上層的元件,也就是 App.js
這支檔案中註冊 FontAwesome 工具:
info
在這裡為了說明上的方便,我們把 FontAwesome 提供的所有圖示都載入進來,但實際使用時,為了避免載入的檔案太過龐大影響使用者瀏覽的速度,通常只會載入有用到的圖示。
#
在需要的地方使用 React FontAwesome 元件接著在需要使用 FontAwesome 圖示的地方,只需要按照下面的步驟即可使用:
這裡你會發現到,要選擇套用哪一個圖示的方式,就和把 props 傳入子層元件的方式一樣,只需要在 <FontAwesomeIcon />
這個元件中使用 icon={...}
帶入就可以了。至於要怎麼知道有哪些圖示可以使用,每個圖示對應的名稱為何,就需要到 FontAwesome 的官方網站(https://fontawesome.com/)檢視了。
#
網速單位換算器中使用到的圖示回到網速單位換算器中,同樣需要先在 App.js
中註冊 React FontAwesome 會使用到的圖示:
接著,我們一共有兩個元件有使用到 FontAwesome 的圖示。
#
UnitControl第一個是 UnitControl 這個元件,在原本的 JSX 中我們有寫:
這種寫法是一般使用 FontAwesome 的寫法,但因為現在是在 React 元件中使用 FontAwesome 提供的元件,就需要改成:
#
UnitConverter在 UnitConverter 中,原本的 JSX 中有寫:
這同樣是一般 FontAwesome 的寫法,轉成 FontAwesome 的元件後會變成:
現在圖示的部分就都可以正常顯示了!
#
換你了:套用 React FontAwesome 元件現在換你透過 React FontAwesome 這個工具來套用 FontAwesome 所提供的圖示,你可以參考下方的步驟:
- 透過 npm 安裝 React FontAwesome 對應的套件
- 在
App.js
中註冊會使用到的 FontAwesome 圖示 - 在需要的元件中(
UnitConverter
和UnitControl
)中將原本的<i>
標籤改成使用<FontAwesomeIcon />
這個元件
本單元相關之網頁連結、完整程式碼與程式碼變更部分可於 apply-react-font-awesome
分支檢視:https://github.com/pjchender/learn-react-from-hooks-internet-speed-converter/tree/apply-react-font-awesome: