๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ19

React Native์™€ React ์ปดํฌ๋„ŒํŠธ ์ฐจ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ React Native๋Š” React์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋ผ์šฐํŒ…๊ณผ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ์—ฌ๊ธฐ์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. React์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐ˜๋ฉด React Native์—์„œ๋Š” ์ œ๊ณต๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค ์•„๋ž˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์ž…๋‹ˆ๋‹ค div = View div์™€ ๋‹ค๋ฅด๊ฒŒ View์—๋Š” ํ…์ŠคํŠธ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค input(type="text") = TextInput button = Button or TouchableOpacity TouchableOpacity๊ฐ€ ์Šคํƒ€์ผ๋ง์ด ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต TouchableOpacity๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค span = Text ๋ชจ๋“  ํ…์ŠคํŠธ๋“ค์€ Text ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์ž‘์„ฑ๋˜์–ด์•ผ .. 2024. 1. 8.
CSS ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ฑ๋Šฅ ๊ฐœ์„  โ—๏ธ๋ฌธ์ œ ์ƒํ™ฉ 2๊ฐ€์ง€ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๊ฐ€ ๋งค๋„๋Ÿฝ์ง€ ๋ชปํ•จ 1. ์Šคํฌ๋กค ์œ„์น˜๊ฐ€ ํŠน์ • ์„น์…˜์— ๋„๋‹ฌํ•˜๋ฉด ํ™”๋ฉด์„ ๊ณ ์ •์‹œํ‚ค๊ณ  ์นด๋“œ๋งŒ ๊ฐ€๋กœ๋กœ ์ด๋™ํ•ด์•ผ ํ•จ(left๋กœ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Œ) 2. ์นด๋“œ๊ฐ€ ์ด๋™ํ•˜๋ฉด ๋ฐฐ๊ฒฝ์˜ ์ด๋ฏธ์ง€๋Š” ๊ฐ€์šด๋ฐ ์œ„์น˜ํ•˜๋Š” ์นด๋“œ์˜ ์ด๋ฏธ์ง€๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•จ(background-image๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Œ) โœ… ํ•ด๊ฒฐ ๋ฏธ๋ฆฌ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ๋ Œ๋”๋ง ํ•ด๋†“์€ ์ƒํƒœ์—์„œ opacity๋งŒ transition์„ ์ฃผ๊ณ  ์นด๋“œ์˜ ์œ„์น˜๋Š” transform์˜ translateX์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ตœ์ ํ™”ํ•จ ์†์„ฑ์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋˜ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ ๊ฐ„๋žตํ•œ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • 1. HTML๊ณผ CSS ๋“ฑ ๋ฆฌ์†Œ์Šค๋ฅผ .. 2024. 1. 8.
[React Native] ํฐํŠธ ์„ค์ • ์ด ๋ฐฉ๋ฒ•์€ ๋ฒ„์ „ 0.70์ด์ƒ๋งŒ ๊ฐ€๋Šฅํ•œ ๊ฑธ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ๋” ๋‚ฎ์€ ๋ฒ„์ „์„ ์‚ฌ์šฉ ์ค‘์ด์‹  ๋ถ„๋“ค์€ ์ง์ ‘ ios์™€ ์•ˆ๋“œ๋กœ์ด๋“œ ํด๋”์—์„œ ์„ค์ •์„ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๊ฒฝ๋กœ์— react-native.config.js ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํฐํŠธ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” module.exports = { assets: ['./assets/fonts'], }; react-native-asset ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค npx react-native-asset ํ˜น์‹œ๋ผ๋„ ios์—์„œ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•œ๋‹ค๋ฉด ios/Fonts์— ํฐํŠธ ํŒŒ์ผ์„ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค! 2024. 1. 5.
[React Native] ๋”ฅ๋งํฌ ์„ค์ •ํ•˜๊ธฐ React Navigation ๊ณต์‹๋ฌธ์„œ์—์„œ ํ•ด๋‹น ๋‚ด์šฉ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค https://reactnavigation.org/docs/deep-linking/ ์•ˆ๋“œ๋กœ์ด๋“œ android > app > src > main > AndroidManifest.xml activity ์•ˆ์—๋‹ค๊ฐ€ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค IOS ios๋Š” 2๊ฐ€์ง€๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค 1. ios > ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ํด๋” > AppDelegate.mm ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค #import - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { return [RCTLinkingManager application:ap.. 2024. 1. 4.
[React Native] Path alias ์„ค์ • ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 1. tsconfig + package.json tsconfig ํŒŒ์ผ์„ ์„ค์ •ํ•ด์ฃผ๊ณ  path alias๋ฅผ ์„ค์ •ํ•  ๋ชจ๋“  ํด๋”์— package.json ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๋ชจ๋“  ํด๋”์— package.json ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ด์„œ ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. //tsconfig.json { "extends": "@tsconfig/react-native/tsconfig.json", "compilerOptions": { "baseUrl": "./src", "paths": { "@components/*": ["components/*"], "@hooks/*": ["hooks/*"], "@pages/*": ["pages/*"], "@routes/*": ["routes/*"], "@types/.. 2024. 1. 3.
Vitest & MSW๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ ์šฉ vite๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ jest๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ msw์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ vitest๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ์„ค์น˜ ์šฐ์„  ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ๋ชจ๋‘ ์„ค์น˜ํ•ด์ฃผ์„ธ์š” ์ € ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์„ค์น˜ํ–ˆ๋Š”๋ฐ ํ˜น์‹œ ์ œ๊ฐ€ ๋น ํŠธ๋ฆฐ๊ฒŒ ์žˆ์„ ์ˆ˜๋„ ์žˆ์–ด์„œ ๋น ์ง„ ๋ถ€๋ถ„์€ ํ™•์ธํ•ด์„œ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š” yarn add --dev vitest @testing-library/jest-dom @testing-library/react @testing-library/user-event msw jsdom MSW ์„ค์ • MSW๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ ค๋Š” ๋ถ„๋“ค์€ ์šฐ์„  ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š” ์ €๋Š” ์„œ๋น„์Šค์›Œ์ปค๋กœ ๋ฐ์ดํ„ฐ ๋ชจํ‚นํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ msw๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค api ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์•„์„œ ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ ์ค‘์— mock๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ.. 2023. 12. 29.