Figma 디자인상 아이콘들을 png로 적용하다 보니, 앱 내에서 선명하게 나오지 않는 디자인적인 이슈를 발견하게 되어
모든 아이콘을 SVG로 다시 적용하게 되었다.
React-Native에서 SVG 파일을 활용하기 위해선 두 가지의 라이브러리를 필요로 한다.
react-native-svg
yarn add react-native-svg
react-native-svg-transformer
yarn add --dev react-native-svg-transformer
두 라이브러리를 받고 잊지말고 ios 에도 적용해준다.
cd ios && pod install
react-native-svg-transformer 설정
react-native-svg-transformer 를 위한 설정이 필요하기 때문에 metro.config.js에 아래 코드를 추가 해 준다.
// metro.cofing.js
const { getDefaultConfig } = require("metro-config");
module.exports = (async () => {
const {
resolver: { sourceExts, assetExts }
} = await getDefaultConfig();
return {
transformer: {
babelTransformerPath: require.resolve("react-native-svg-transformer")
},
resolver: {
assetExts: assetExts.filter(ext => ext !== "svg"),
sourceExts: [...sourceExts, "svg"]
}
};
})();
TypeScript 를 사용하고 있다면 declarations.d.ts 파일에 아래 코드를 추가 혹은 (없다면) 생성해준다.
// declarations.d.ts
declare module "*.svg" {
import React from 'react';
import { SvgProps } from "react-native-svg";
const content: React.FC<SvgProps>;
export default content;
}
SVG 파일을 사용하기 위한 모든 준비는 끝났고 ,
import 후 컴포넌트 사용하듯 사용하면 된다.
ex )
// 예시코드
<MainTabNav.Screen
name={CM_SC_Home}
component={HomeMainScreen}
options={{
tabBarLabel: '홈',
tabBarIcon: ({focused}) =>
focused ? <NavHomeLight /> : <NavHomeDark />, // SVG
}}
/>
수고하셨습니다.
etc) 만약 expo로 앱을 빌드 하셨다면, react-native-svg-transformer 설정법이 다르니 아래의 해당 라이브러리 도큐먼트를 참고하세요.
https://github.com/kristerkari/react-native-svg-transformer
GitHub - kristerkari/react-native-svg-transformer: Import SVG files in your React Native project the same way that you would in
Import SVG files in your React Native project the same way that you would in a Web application. - GitHub - kristerkari/react-native-svg-transformer: Import SVG files in your React Native project th...
github.com
'React-Native' 카테고리의 다른 글
[React Native]Warning Excessive number of pending callbacks: 501 (0) | 2023.04.18 |
---|---|
[React Native]IOS z-index이슈 (0) | 2023.04.12 |
[React Native]react-native-shadow-generator (0) | 2023.04.11 |
[React Native]android debug apk 명령어로 추출하기 (0) | 2023.04.10 |
[React Native]Android FullScreen(전체화면) 적용하기 (0) | 2023.04.07 |