Vite에서 Svg 컴포넌트로 불러오는 한국 자료가 없어서 직접 만들었습니다.
React Vite Svg 컴포넌트로 불러오기
기존 리액트 웹 팩을 사용하면 SVG를 컴포넌트로 사용하는 방법이 많이 있지만 , 만약 vite랑 typeScript를 사용한다면
그냥 npm i vite-plugin-svgr 명령어만 쳐서는 동작하지 않습니다 !
https://www.npmjs.com/package/vite-plugin-svgr
vite-plugin-svgr
Vite plugin to transform SVGs into React components. Latest version: 2.2.1, last published: 2 days ago. Start using vite-plugin-svgr in your project by running `npm i vite-plugin-svgr`. There are 26 other projects in the npm registry using vite-plugin-svgr
www.npmjs.com
위 사이트를 보고 라이브 러리를 설치하고 , vite-config에 등록을 해줍니다
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import svgr from 'vite-plugin-svgr';
// https://vitejs.dev/config/
export default defineConfig({
plugins: [react(), svgr()],
});
import { ReactComponent as Logo } from './logo.svg'
이런식으로 사용하라고 나와 있는데 이런식으로 불르면 vite + typeScript 조합에서는 동작하지 않습니다.
설정 파일이 있는 폴더(tsconfig.json 있는곳)에서 custom.d.ts 파일을 만들어 줍니다.
declare module '*.svg' {
import React = require('react');
export const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>;
const src: string;
export default src;
}
위와 같이 코드를 입력을 해줍니다.
그리고 나서 tsconfig.json에 등록을 해줍니다.
"include": ["src", "custom.d.ts"],
그리고 나서 사용을 하면 정상적으로 동작하는 것을 확인할 수 있습니다.
'FrontEnd > React' 카테고리의 다른 글
[React] SOLID 원칙 적용 컴포넌트 리팩토링 (0) | 2022.11.25 |
---|---|
[React] 모드 값에 따른 소셜 로그인 버튼 만들기 (+리팩토링) (0) | 2022.09.12 |
[React] Styled Component 활용해서 컴포넌트 재사용 한 후기 (0) | 2022.07.07 |
cannot appear as a descendant of 에러 (0) | 2022.02.26 |
[React] 구조분해 할당 이용한 useState() 리팩토링 (0) | 2022.02.25 |