λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
[개발] Practice/React

[React] React μ—μ„œ Font Awesome μ‚¬μš©ν•΄λ³΄κΈ°

by Connecting-the-dots 2022. 3. 18.
728x90
λ°˜μ‘ν˜•

πŸ’‘ μ‹€μŠ΅ 포인트!

  • Font Awesome 은 μ›Ήμ—μ„œ μ•„μ΄μ½˜μ΄ ν•„μš”ν•  λ•Œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ— ν•΄λ‹Ήν•œλ‹€.
  • 일반적인 HTML νŒŒμΌμ—μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œμ™€ Font Awesome μ‚¬μš© 방법이 λ‹€λ₯Έλ° ν„°λ―Έλ„μ—μ„œ νŒ¨ν‚€μ§€ μ„€μΉ˜ν•  λ•Œ 맀번 κ²€μƒ‰ν•˜κΈ° νž˜λ“€ 것 κ°™μ•„μ„œ(...) λ‚΄κ°€ 보렀고 ν¬μŠ€νŒ…μ„ ν•΄λ³Έλ‹€.

πŸ’œ ν„°λ―Έλ„μ—μ„œ Font Awesome νŒ¨ν‚€μ§€ μ„€μΉ˜ν•˜κΈ°

🀍 Font Awesome 의 SVG 기반 μ•„μ΄μ½˜μ„ ν™œμ„±ν™”ν•˜κΈ° μœ„ν•œ κΈ°λ³Έ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•œλ‹€. (ν•„μˆ˜)

npm i @fortawesome/fontawesome-svg-core

🀍 Font Awesome μ•„μ΄μ½˜μ— λŒ€ν•œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•œλ‹€.

  • Font Awesome μ—λŠ” Solid, Regular, Light, Brands 와 같은 μΉ΄ν…Œκ³ λ¦¬λ‚˜ 유/무료 여뢀에 따라 νŒ¨ν‚€μ§€λ“€μ΄ λ‹€μ–‘ν•˜λ‹€.
  • λͺ¨λ“  νŒ¨ν‚€μ§€λ“€μ„ μ„€μΉ˜ν•  ν•„μš”λŠ” μ—†μœΌλ©°, μ‚¬μš©ν•˜κ³  싢은 μ•„μ΄μ½˜μ΄ μ†ν•œ μΉ΄ν…Œκ³ λ¦¬ νŒ¨ν‚€μ§€λ§Œ μ„€μΉ˜ν•˜λ©΄ λœλ‹€.
// SOLID 무료 νŒ¨ν‚€μ§€
npm i @fortawesome/free-solid-svg-icons 

// REGULAR 무료 νŒ¨ν‚€μ§€
npm i @fortawesome/free-regular-svg-icons 

// BRANDS 무료 νŒ¨ν‚€μ§€
npm i @fortawesome/free-brands-svg-icons

🀍 Font Awesome 을 React μ»΄ν¬λ„ŒνŠΈ ν˜•νƒœλ‘œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•œλ‹€. (ν•„μˆ˜)

npm i @fortawesome/react-fontawesome

πŸ’œ Font Awesome μ•„μ΄μ½˜ import ν•˜κΈ°

  • μ›Ήμ—μ„œ λ°”λ‘œ Font Awesome 을 μ‚¬μš©ν•˜λ©΄ λ‹€μˆ˜μ˜ μ•„μ΄μ½˜μ„ λͺ¨λ‘ λ‘œλ“œν•΄μ•Όν•˜λ―€λ‘œ λΉ„νš¨μœ¨μ μ΄λ‹€.
  • React μ—μ„œ Font Awesome 을 μ‚¬μš©ν•  λ•Œμ—λŠ” νŠΉμ • μΉ΄ν…Œκ³ λ¦¬μ—μ„œ ν•„μš”ν•œ μ•„μ΄μ½˜λ§Œ import ν•΄μ£ΌλŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

πŸ’œ Font Awesome νŒ¨ν‚€μ§€ μ„€μΉ˜ 및 import 해보기

🀍 Font Awesome ν™ˆνŽ˜μ΄μ§€μ—μ„œ λ§˜μ— λ“œλŠ” μ•„μ΄μ½˜μ„ κ³ λ₯Έλ‹€.

  • λ§˜μ— λ“œλŠ” μ•„μ΄μ½˜μ„ ν΄λ¦­ν•˜λ©΄ μœ„μ™€ 같은 화면이 λ‚˜μ˜€κ³  React 탭을 ν΄λ¦­ν•˜λ©΄ μ½”λ“œκ°€ λ‚˜μ˜¨λ‹€.
    (κ·Έλƒ₯ "κ·Έλ ‡κ΅¬λ‚˜~" ν•˜κ³  μ•„μ΄μ½˜ 이름과 μ–΄λŠ νŒ¨ν‚€μ§€μ— μ†ν•΄μžˆλŠ”μ§€λ§Œ ν™•μΈν•˜κ³  λ„˜μ–΄κ°€λ©΄ λœλ‹€. μ–΄μ°¨ν”Ό μ €κ±° κ·ΈλŒ€λ‘œ μ‚¬μš© λͺ»ν•œλ‹€.)
  • λ‚΄κ°€ κ³ λ₯Έ μ•„μ΄μ½˜μ˜ 경우 μ•„μ΄μ½˜ 이름은 λŒ€λž΅ star-and-crescent 이며, solid νŒ¨ν‚€μ§€μ— μ†ν•΄μžˆμŒμ„ μ•Œ 수 μžˆλ‹€.

🀍 ν„°λ―Έλ„μ—μ„œ Font Awesome κ³Ό κ΄€λ ¨ν•˜μ—¬ ν•„μš”ν•œ νŒ¨ν‚€μ§€λ“€μ„ μ„€μΉ˜ν•œλ‹€.

  • ν•„μˆ˜λ‘œ μ„€μΉ˜ν•΄μ•Όν•˜λŠ” νŒ¨ν‚€μ§€ 2κ°œμ™€ λ‚΄κ°€ ν•„μš”ν•œ solid νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•΄μ£Όμ—ˆλ‹€.

🀍 React ν”„λ‘œμ νŠΈλ‘œ Font Awesome μ•„μ΄μ½˜ import ν•˜κΈ°

  • 일반 HTML νŒŒμΌκ³ΌλŠ” μ•„μ΄μ½˜μ„ κ°€μ Έμ˜€λŠ” 방식이 λ‹€λ₯΄λ―€λ‘œ React 에 μ•„μ΄μ½˜μ„ κ°€μ Έμ˜€λŠ” 게 처음이라면 쑰금 헀맬 수 μžˆλ‹€.

  • 일단 μ•„μ΄μ½˜μ„ import ν•˜λ €λŠ” 파일 상단에 μœ„μ™€ 같이 μ½”λ“œλ₯Ό 적어쀀닀.
// μ•„μ΄μ½˜μ„ 넣을 μœ„μΉ˜μ— μž‘μ„±ν•΄μ•Ό ν•˜λŠ” μ½”λ“œ
<FontAwesomeIcon icon={μ•„μ΄μ½˜λͺ…} />
  • 그리고 μ•„μ΄μ½˜μ΄ λ“€μ–΄κ°€μ•Ό ν•˜λŠ” μœ„μΉ˜μ— μœ„μ™€ 같이 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ€€λ‹€.
  • μ•„λ§ˆ μ•„μ΄μ½˜μ„ κ³ λ₯΄κΈ΄ ν–ˆμ§€λ§Œ λ‚΄κ°€ λ³Έ μ•„μ΄μ½˜ 이름을 κ·ΈλŒ€λ‘œ 넣을 μˆ˜λ„ μ—†κΈ° λ•Œλ¬Έμ— μ•„μ΄μ½˜ 이름을 μ •ν™•ν•˜κ²Œ 뭐라고 λ„£μ–΄μ•Ό 할지 λͺ¨λ₯Ό 것이닀.

  • 그럴 λ•ŒλŠ” μ•„μ΄μ½˜μ„ κ³ λ₯Ό λ•Œ ν™•μΈν–ˆλ˜ 이름을 ν™œμš©ν•˜λ©΄ λœλ‹€.
  • λ‚΄κ°€ κ³ λ₯Έ μ•„μ΄μ½˜μ˜ 경우 fa-solid fa-star-and-crescent μ˜€κΈ° λ•Œλ¬Έμ— ν‚€μ›Œλ“œλ‘œ starand κΉŒμ§€ μž…λ ₯ν•΄μ£Όμ—ˆλ”λ‹ˆ μžλ™μ™„μ„±μœΌλ‘œ faStarAndCrescent κ°€ λ‚˜μ™€μ„œ μ„ νƒν•΄μ£Όμ—ˆλ‹€.
    (참고둜 React μ—μ„œ μ‚¬μš©ν•˜λŠ” JSX λ¬Έλ²•μ˜ 경우 CamelCase 둜 μž‘μ„±ν•˜λ©°, λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ 눈치껏 'star-and-crescent' κ°€ μ•„λ‹˜μ„ μ•Œ 수 μžˆμ—ˆλ‹€.)

  • κ·Έλ ‡κ²Œ μž‘μ„±μ΄ μ™„λ£Œλ˜λ©΄ 상단에 μžλ™μœΌλ‘œ faStarAndCrescent μ•„μ΄μ½˜μ΄ import λ˜μ—ˆμŒμ„ 확인할 수 μžˆλ‹€.

🀍 React ν”„λ‘œμ νŠΈλ₯Ό λ―Έλ¦¬λ³΄κΈ°ν•˜μ—¬ λΈŒλΌμš°μ €μ—μ„œ ν™•μΈν•˜κΈ°

  • μ—¬κΈ°κΉŒμ§€ μ§„ν–‰ν–ˆμœΌλ©΄ ν”„λ‘œμ νŠΈμ— 잘 적용이 λ˜μ—ˆλŠ”μ§€ 확인을 해보면 λœλ‹€.
  • μž‘μ—…μ€‘μΈ ν”„λ‘œμ νŠΈλ₯Ό VSCode μ—λ””ν„°μ—μ„œ μ˜€ν”ˆν•œ μƒνƒœλ‘œ 터미널에 npm start λ₯Ό μž…λ ₯ν•˜λ©΄ ν˜„μž¬ μž‘μ—…μ€‘μΈ ν”„λ‘œμ νŠΈλ₯Ό λΈŒλΌμš°μ €μ—μ„œ 미리보기처럼 확인할 수 μžˆλ‹€.

  • λ‚˜μ˜ 경우 둜고 μ΄λ―Έμ§€λ‘œ Font Awesome 이미지λ₯Ό μ‚½μž…ν•œ 건데 μ œλŒ€λ‘œ 잘 반영이 λ˜μ–΄μžˆμŒμ„ 확인할 수 μžˆμ—ˆλ‹€.
728x90
λ°˜μ‘ν˜•