React 프로젝트를 진행할 때 아이콘은 사용자 인터페이스의 완성도를 높여주는 중요한 구성 요소다. 버튼, 입력창, 네비게이션 등 다양한 곳에서 기능을 직관적으로 전달하기 위해 아이콘을 자주 활용하게 된다.
이 글에서는 React에서 아이콘을 사용하는 주요 방법 4가지를 소개하며, 특히 react-icons
사이트를 활용해 라이브러리를 설치하지 않고 SVG를 직접 복사해 사용하는 팁도 함께 다룬다.
이번 글은 2부로 이어지며, SVG를 재사용 가능한 컴포넌트로 구성하는 방법은 다음 글에서 자세히 설명할 예정이다.
가장 기본적인 방식으로, SVG 코드를 JSX 내부에 직접 작성하여 사용하는 방법이다.
const CheckIcon = () => (
<svg
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="green"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M5 13l4 4L19 7" />
</svg>
);
SVG 파일을 컴포넌트처럼 import하여 사용하는 방식이다. Create React App에서는 기본적으로 지원하며, Vite 등의 환경에서는 설정이 필요할 수 있다.
// CheckIcon.svg
// <svg viewBox="0 0 24 24"><path d="..." /></svg>
import { ReactComponent as CheckIcon } from './CheckIcon.svg';
const Button = () => (
<button>
<CheckIcon width="16" height="16" /> 저장
</button>
);
react-icons
)가장 널리 사용되는 방식으로, 다양한 아이콘 세트를 하나의 라이브러리로 통합한 react-icons
를 설치하여 사용하는 방법이다.
npm install react-icons
import { FiSearch } from 'react-icons/fi';
const SearchBar = () => (
<div>
<FiSearch size={18} color="#555" />
<input type="text" placeholder="검색" />
</div>
);
react-icons
공식 사이트(react-icons.github.io)에서는 다양한 아이콘을 미리 확인할 수 있으며, 원하는 아이콘을 개발자 도구를 통해 SVG 코드만 복사해서 사용하는 방식도 가능하다. 이 방법은 패키지를 설치하지 않고도 다양한 아이콘을 활용할 수 있다는 장점이 있다.
<svg>...</svg>
코드를 복사한다.HTML 속성 | JSX 속성 |
---|---|
stroke-width | strokeWidth |
fill-rule | fillRule |
class | className |
const HomeIcon = () => (
<svg
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="M3 9l9-7 9 7" />
<path d="M9 22V12h6v10" />
</svg>
);
react-icons 사이트에서 원하는 아이콘을 개발자 도구로 복사해
<svg>
형태로 직접 사용하는 방식은, 라이브러리 설치 없이도 아이콘을 유연하게 활용할 수 있는 좋은 방법이다. 특히 단일 아이콘만 필요한 경우나, 프로젝트 용량을 최소화하고 싶을 때 매우 유용하다. JSX 문법 변환만 잘 처리하면 문제없이 사용할 수 있다.
이번 글에서는 SVG 아이콘을 사용하는 주요 방식들을 소개했다.
다음 글에서는 SVG를 재사용 가능한 React 컴포넌트로 만들고,
props로 크기·색상 등을 제어하는 방법,
여러 아이콘을 하나의 폴더에서 관리하는 전략까지 자세히 다룰 예정이다.