React Native
-
- [React Native] AsyncStorageAsyncStorage๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์์ ๋ก์ปฌ์ ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๋น๋๊ธฐ ์ ์ฅ์์ธ AsyncStorage์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. AsyncStorage๊ฐ๋ ๋ก์ปฌ์ ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ํค-๊ฐ(Key-Value) ์์ผ๋ก ์ ์ฅํ๊ณ ๋ถ๋ฌ์ค๋ ๋น๋๊ธฐ ์ ์ฅ์๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ ์ ์ฅํ๋ ๊ณต๊ฐ์น์ localStorage์ ๋น์ทํ์ง๋ง, ๋น๋๊ธฐ ๋ฐฉ์์ด๋ฉฐ, ๋ค์ดํฐ๋ธ์ ์ต์ ํ๋์ด ์๋ค.์ฑ ์ฌ์คํ ํ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ ์ ์๋ค.์ฉ๋์ด ํฌ์ง ์์ ๊ฐ๋จํ ๋ฐ์ดํฐ ์ ์ฅ์ ์ ํฉํ๋ค. (์: ํ ํฐ, ์ฌ์ฉ์ ์ค์ , ๊ฐ๋จํ ์บ์ ๋ฑ) ์ค์น๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ 0.60 ์ด์์์๋ ๊ณต์ ํจํค์ง @๏ผ react-native-async-storage/async-storage@๋ฅผ ์ฌ์ฉํ๋ค.$..
1 2025.08.11 -
- [React Native] navigate์ replace ๋ฉ์๋์ ์ฐจ์ด (react-navigation)navigate์ replace ๋ฉ์๋์ ์ฐจ์ด (react-navigation)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค๋น๊ฒ์ด์ (React Navigation)์์ @navigate@ ๋ฉ์๋์ @replace@ ๋ฉ์๋์ ์ฐจ์ด๋ฅผ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ์ฐจ์ดnavigate ๋ฉ์๋๊ธฐ๋ฅ์๋ก์ด ํ๋ฉด์ ์คํ(Stack)์ ์ถ๊ฐํ๋ค.ํ์ฌ ํ๋ฉด ์์ ๋ค๋ฅธ ํ๋ฉด์ ์๋(push) ๋ฐฉ์์ด๋ค. ๊ฒฐ๊ณผ์ด์ ํ๋ฉด์ผ๋ก ๋ค๋ก ๊ฐ๊ธฐ(back) ํ ์ ์๋ค.๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ(←)์ด ์๋์ผ๋ก ์๊ธด๋ค. (Stack Navigator ๊ธฐ์ค) ์ฌ์ฉ ์์navigation.navigate('Signup'); replace ๋ฉ์๋๊ธฐ๋ฅํ์ฌ ํ๋ฉด์ ์ ํ๋ฉด์ผ๋ก ๊ต์ฒด(replace)ํ๋ค.์ด์ ํ๋ฉด์ ์คํ์์ ์ ๊ฑฐํ๊ณ , ์ ํ๋ฉด์ผ๋ก ๋ฐ๊พผ๋ค. ๊ฒฐ๊ณผ์ด์ ํ๋ฉด์ผ๋ก ๋ค๋ก ๊ฐ๊ธฐ ํ ์ ์๋ค..
1 2025.08.07 -
- [React Native] ๋ก๋ฉ ์คํผ๋(Loading Spinner) ๋ง๋ค๊ธฐ๋ก๋ฉ ์คํผ๋(Loading Spinner) ๋ง๋ค๊ธฐ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ๊ฐ๋ฐ ์ค, ๊ฐ๋จํ๊ฒ ๋ก๋ฉ ์คํผ๋(Loading Spinner)๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒActivityIndicator ์ด์ฉํ๊ธฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ์์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ @ActivityIndicator@๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ๋ก๋ฉ ์คํผ๋๋ฅผ ๋ง๋ค ์ ์๋ค. โ ๋ก๋ฉ ์คํผ๋ ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ๋ก๋ฉ ์คํผ๋๋ @ActivityIndicator@ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ค ์ ์๋ค.import { View, ActivityIndicator, StyleSheet } from 'react-native';function LoadingOverlay() { return ( );}export default..
2025.06.06 -
- [React Native] BlurViewBlurView๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ์์คํฌ(Expo) ํ๋ก์ ํธ์์ ๋ธ๋ฌ ํจ๊ณผ๋ฅผ ์ฃผ๋ BlurView ์ปดํฌ๋ํธ์ ๋ํด ๊ฐ๋จํ ์ ๋ฆฌํด๋ณธ๋ค. BlurView๊ฐ๋ Expo์์ ์ ๊ณตํ๋ ํ๋ฉด์ ์ผ๋ถ๋ถ์ ๋ธ๋ฌ(Blur, ํ๋ฆผ ํจ๊ณผ)๋ฅผ ์ ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ์๊ฐ์ ์ปดํฌ๋ํธReact Native์์๋ iOS์ Android์ ๋ค์ดํฐ๋ธ ๋ธ๋ฌ ํจ๊ณผ๋ฅผ ์ง์ ๊ตฌํํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋กญ๊ธฐ ๋๋ฌธ์, Expo๋ ์ด๋ฌํ ๋ธ๋ฌ ํจ๊ณผ๋ฅผ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋๋ก @expo-blur@ ํจํค์ง๋ฅผ ์ ๊ณตํ๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ@BlurView@๋ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ ๋น๋์ค ์์ ์ฌ๋ ค์ผ ํจ๊ณผ๊ฐ ๋ช ํํ๊ฒ ๋ณด์ธ๋ค.iOS์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ง์๋๋ฉฐ, Android๋ ์ผ๋ถ ๊ธฐ๊ธฐ์์ ์ ํ๋ ์ ์์์ ์ฃผ์ํ๋ค.React Navigation ๋ผ์ด..
2025.05.15 -
- [React.js] useLayoutEffect ํuseLayoutEffect ํ ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ(React.js)์ @useLayoutEffect@ ํ ์ ๋ํด ๊ฐ๋จํ ์ ๋ฆฌํด๋ณธ๋ค. useLayoutEffect ํ ๊ฐ๋ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋๊ธฐ ์ง์ , ์ฆ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ ์ ์ ์คํ๋๋ ํ ํ๋ฉด์ ๋ณํ๊ฐ ๋ํ๋๊ธฐ ์ ์ ์ด๋ ํ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒimport { useLayoutEffect } from 'react';useLayoutEffect(() => { // ๋ ์ด์์ ๊ด๋ จ ๋ณ๊ฒฝ, ๋๊ธฐ์ DOM ์กฐ์ ๋ฑ์ ์ฌ์ฉํ๋ค.}, [dependencies]); useEffect ํ ๊ณผ ๋น๊ตํ๊ธฐํญ๋ชฉuseEffect ํ useLayoutEffect ํ ์คํ ์์ ์ปดํฌ๋ํธ ๋ ๋๋ง ํ, ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ๊ทธ๋ฆฐ ๋ค์ปดํฌ๋ํธ ๋ ๋๋ง ์งํ, ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ ..
2025.05.10 -
- [React Native] ํ๋ฉด ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌํ๊ธฐ (React Navigation)ํ๋ฉด ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌํ๊ธฐ (React Navigation)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ํ๋ก์ ํธ์์ React Navigation ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ํ๋ฉด ๊ฐ ์ด๋(Navigation) ๊ธฐ๋ฅ์ ๊ตฌํํ ๋, ํ๋ฉด ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ๋ฐ์ดํฐ ์ ๋ฌํ๊ธฐ@navigate()@ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋, ๋ ๋ฒ์งธ ์ธ์๋ก ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ค์ ํ๋ฉด์ ๋ณด๋ผ ์ ์๋ค.navigation.navigate('MealsOverview', { categoryId: itemData.item.id,}); ⇒ ์ฒซ ๋ฒ์งธ ์ธ์: ์ด๋ํ ํ๋ฉด ์ด๋ฆ⇒ ๋ ๋ฒ์งธ ์ธ์ : @params@ ๊ฐ์ฒด (์ํ๋ ๋ฐ์ดํฐ ํฌํจ) ๋ฐ์ดํฐ ์ถ์ถํ๊ธฐ๋ฐฉ๋ฒ โ : route prop ์ฌ์ฉํ๊ธฐ@Meal..
2 2025.05.10 -
- [React Native] React Navigation ๋ผ์ด๋ธ๋ฌ๋ฆฌReact Navigation ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ์ฑ์์ ํ๋ฉด ๊ฐ์ ์ ํ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React Navigation์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. React Navigation๊ฐ๋ React Native ์ฑ์์ ํ๋ฉด ๊ฐ์ ์ ํ(๋ค๋น๊ฒ์ด์ )์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋์์ฃผ๋ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌReact Native ์ฑ์ ๋ค์ํ ๋ค๋น๊ฒ์ด์ ํจํด(์คํ, ํญ, ๋๋ก์ด ๋ฑ)์ ์ถ๊ฐํ ์ ์๊ฒ ํด์ค๋ค.์น์ ๋ผ์ฐํ (@react-router@)๊ณผ ๋น์ทํ์ง๋ง, ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ๋ง์ถ ๊ธฐ๋ฅ(์ค์์ดํ, ์ ์ค์ฒ, ํค๋ ์ ๋๋ฉ์ด์ ๋ฑ)์ ์ ๊ณตํ๋ค. ์ฃผ์ ๊ธฐ๋ฅ๊ธฐ๋ฅ์ค๋ช ์คํ ๋ค๋น๊ฒ์ด์ (Stack Navigation)- A ํ๋ฉด → B ํ๋ฉด ์ด๋ ๋ฐ ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ํ ์ ์..
2025.05.06 -
- [React Native] ๋ค๋ก๊ฐ๊ธฐ ๊ธฐ๋ฅ ๋ง๋ ๋ฐฉ๋ฒ๋ค๋ก๊ฐ๊ธฐ ๊ธฐ๋ฅ ๋ง๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ ์ฑ์์ ํน์ ์คํฌ๋ฆฐ์์ ๋ค๋ก๊ฐ๊ธฐ ๊ธฐ๋ฅ์ ๋ง๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ๋ฐฉ๋ฒ โ : BackHandler API ์ด์ฉํ๊ธฐ (Android)@react-native@ ํจํค์ง์ @BackHandler@ API๋ฅผ ์ฌ์ฉํด์ ๋ค๋ก๊ฐ๊ธฐ ์ด๋ฒคํธ๋ฅผ ๋ฌด์ํ๋๋ก ์ค์ ํ ์ ์๋ค.์ด ๋ฐฉ๋ฒ์ ์๋๋ก์ด๋(Android)์์ ๋ฌผ๋ฆฌ์ ์ธ ๋ค๋ก๊ฐ๊ธฐ ๊ธฐ๋ฅ์ ๋ง์์ค๋ค.iOS์์๋ ๋ฌผ๋ฆฌ์ ์ธ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ด ์๊ธฐ ๋๋ฌธ์ ๋ณ๋๋ก ์ฒ๋ฆฌํด์ฃผ์ง ์์๋ ๋๋ค.import { useEffect } from 'react';import { BackHandler } from 'react-native';function myApp() { useEffect(() => ..
2025.04.17 -
- [React Native] .jsx ํ์ผ ์ฌ์ฉ ํ๋ ๋ฐฉ๋ฒ.jsx ํ์ผ ์ฌ์ฉ ํ๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ํ๋ก์ ํธ์์ @.jsx@ ํ์ผ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค.์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์์๋ @.js@ ํ์ผ๋ง ์ธ์ํ๋ฉฐ, @.jsx@ ํ์ผ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๋ฐฉ๋ฒํ์ฌ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ํ๋ก์ ํธ์ @expo-cli@ ๋ฒ์ ์ ๋ฐ๋ผ ๋ฐฉ๋ฒ โ ๋๋ ๋ฐฉ๋ฒ โก์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผํ๋ค. ๋ฐฉ๋ฒ โ : metro.config.js ํ์ผ์ ํ์ฅ์ ์ถ๊ฐํ๊ธฐํ๋ก์ ํธ ์ต์๋จ ๊ฒฝ๋ก(@/@)์ ๋ฉํธ๋ก ์ค์ ํ์ผ(@metro.config.js@)์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.๋ง์ฝ ํด๋น ํ์ผ์ด ์์ ๊ฒฝ์ฐ ์๋ก ์์ฑํด์ค๋ค. /metro.config.jsmodule.exports = { resolver: { sourceExts: [..
1 2025.04.11 -
- [React Native] StatusBar (react-native, expo-status-bar)StatusBar (react-native, expo-status-bar)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์ @StatusBar@์ ์์คํฌ(Expo)์ @expo-status-bar@์ ๋ํด ๊ฐ๋จํ ์ ๋ฆฌํด๋ณธ๋ค. StatusBar (React Native)๊ฐ๋ ์๋จ ์ํ ํ์์ค(์๊ฐ, ๋ฐฐํฐ๋ฆฌ, ์ ํธ ๋ฑ)์ ์คํ์ผ, ๋ฐฐ๊ฒฝ์, ํ์ ์ฌ๋ถ ๋ฑ์ ์ ์ดํ ์ ์๋ React Native ๋ด์ฅ ์ปดํฌ๋ํธ ์ฌ์ฉ ๋ฐฉ๋ฒimport { StatusBar } from 'react-native';export default function App() { return ( );} ์ฃผ์ ์์ฑ์์ฑ์ค๋ช ํ๋ซํผ@barStyle@- ํ ์คํธ ์์ ์ค์ โถ @default@ : ํ๋ซํผ๋ณ ๊ธฐ๋ณธ ์์ (iOS ..
2025.04.11 -
- [React Native] Platform APIPlatform API๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์ Platform API์ ๋ํด ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณธ๋ค. Platform API๊ฐ๋ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์์ ์ฑ์ด ์คํ๋๊ณ ์๋ ํ๋ซํผ(iOS, Android, Web ๋ฑ)์ ๊ฐ์งํ๊ณ , ํ๋ซํผ๋ณ๋ก ๋ค๋ฅธ ๋์์ด๋ ์คํ์ผ์ ๊ตฌํํ ์ ์๊ฒ ํด์ฃผ๋ ์ ํธ๋ฆฌํฐ ์ฌ์ฉ ๋ฐฉ๋ฒ๋ถ๋ฌ์ค๊ธฐimport { Platform } from 'react-native'; โ Platform.OSํ์ฌ ์คํ ์ค์ธ ํ๋ซํผ์ ๋ฌธ์์ด๋ก ๋ฐํํด ์ค๋ค.@android@, @ios@, @web@, @windows@, @macos@const platform = Platform.OS;if (platform === 'android') { console.log('Running on Android'..
2025.04.11 -
- [React Native] ScrollViewScrollView๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์ @ScrollView@ ์ปดํฌ๋ํธ์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ScrollView๊ฐ๋ ์คํฌ๋กค ๊ฐ๋ฅํ ์ปจํ ์ด๋๋ก, ์์ ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์ ํฌ๊ธฐ๋ฅผ ๋์ด์ค ๋ ์คํฌ๋กค(Scroll)์ ํตํด ๋ณผ ์ ์๊ฒ ํด์ฃผ๋ ์ปดํฌ๋ํธ์์ ์์๋ค์ด ๋ง๊ฑฐ๋ ํ๋ฉด๋ณด๋ค ์ปค์ง ๊ฒฝ์ฐ, ์ฌ์ฉ์๊ฐ ์คํฌ๋กคํด์ ๋ณผ ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค. ์ฃผ์ ์์ฑ์์ฑํ์ ์ค๋ช @horizontal@@boolean@@true@๋ก ์ค์ ์, ๊ฐ๋ก ์คํฌ๋กค ๊ฐ๋ฅ (๊ธฐ๋ณธ : ์ธ๋ก)@contentContainerStyle@@style@๋ด๋ถ ์ฝํ ์ธ ์ ์ฒด์ ์ ์ฉํ ์คํ์ผ@showsVerticalScrollIndicator@@boolean@์ธ๋ก ์คํฌ๋กค๋ฐ ํ์ ์ฌ๋ถ@showsHorizontalScrollIndicato..
2025.04.11 -
- [React Native] KeyboardAvoidingViewKeyboardAvoidingView๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์ @KeyboardAvoidingView@ ์ปดํฌ๋ํธ์ ๋ํด ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณธ๋ค. KeyboardAvoidingView๊ฐ๋ ํค๋ณด๋๊ฐ ํ๋ฉด์ ๋ํ๋ ๋ ์ ๋ ฅ ํ๋ ๋ฑ์ UI๊ฐ ๊ฐ๋ ค์ง๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธํค๋ณด๋ ๋ ์ด์์์ด ํ์๋ ๋, ์์ ์์๋ฅผ ์๋ก ์ฌ๋ ค์ ์ ๋ ฅ์ฐฝ์ ๊ฐ๋ฆฌ์ง ์๋๋ก ํด์ค๋ค.Android์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฒ๋ฆฌ๋๋, iOS์์๋ ๊ทธ๋ ์ง ์์ ์ด ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ๋ฉด ์ ์ฉํ๋ค. ์ฃผ์ ์์ฑbehaviorํค๋ณด๋๊ฐ ๋ํ๋ ๋์ ๋์ ๋ฐฉ์์ ์กฐ์ ํ ์ ์๋ค.ํ๋ซํผ์ ๋ฐ๋ผ ๋์์ด ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์ @Platform.OS@๋ฅผ ํตํด ์กฐ๊ฑด ๋ถ๊ธฐํด์ ์ฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.์ต์ ์ค๋ช @padding@ํค๋ณด๋์ ๋์ด๋ง..
2025.04.10 -
- [React Native] ์๋ฎฌ๋ ์ดํฐ ๋๋ฐ์ด์ค ์๋ ํ์ ๊ธฐ๋ฅ ์ผ๋ ๋ฐฉ๋ฒ (Expo)์๋ฎฌ๋ ์ดํฐ ๋๋ฐ์ด์ค ์๋ ํ์ ๊ธฐ๋ฅ ์ผ๋ ๋ฐฉ๋ฒ (Expo)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ์์คํฌ(Expo) ํ๋ก์ ํธ๋ฅผ ์๋ฎฌ๋ ์ดํฐ๋ก ์คํํ ๋, ๋๋ฐ์ด์ค ์๋ ํ์ ๊ธฐ๋ฅ์ ์ผ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ(1) ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ํ์ผ(app.json) orientation ํค ๊ฐ ๋ณ๊ฒฝํ๊ธฐํ๋ก์ ํธ ์ต์๋จ ๊ฒฝ๋ก์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ํ์ผ(@app.json@)์ @orientation@ ํค์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด @default@๋ก ์ค์ ํด์ค๋ค. /app.json{ "expo": { "name": "section-02", "slug": "section-02", "version": "1.0.0", "orientation": "default", "icon": "./as..
2025.04.10 -
- [React Native] Dimensions APIDimensions API๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์ ๋ด์ฅ API ์ค ํ๋์ธ Dimensions API์ ๋ํด ๊ฐ๋จํ ์ ๋ฆฌํด๋ณธ๋คDimensions API๋ฅผ ์ด์ฉํ์ฌ ํ์ฌ ๋๋ฐ์ด์ค์ ํ๋ฉด ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. Dimensions API๊ฐ๋ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ ๋ด์ฅ API๋๋ฐ์ด์ค์ ํ๋ฉด ํฌ๊ธฐ(๋๋น(Width)์ ๋์ด(Height)) ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ฌ์ฉ๋๋ค.๋ฐ์ํ UI ๊ตฌ์ฑ์ ํ์ฉํ ์ ์๋ค.์ด๋ฌํ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ํฐํธ ํฌ๊ธฐ(Font Size), ํจ๋ฉ(Padding), ๋ง์ง(Margin) ๋ฑ์ ๋๋ฐ์ด์ค ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ์กฐ์ ํ ์ ์๋ค. ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ง์ถฐ ํฐํธ, ๊ฐ๊ฒฉ, ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋๋ฏธ๋์ด ์ฟผ๋ฆฌ(Media Que..
2025.04.10 -
- [React Native] ํ๋ซํผ ๋ณ๋ก ์์์ ๊ทธ๋ฆผ์ ํจ๊ณผ ๋ฃ๊ธฐ (Android, iOS, Web)ํ๋ซํผ ๋ณ๋ก ์์์ ๊ทธ๋ฆผ์ ํจ๊ณผ ๋ฃ๊ธฐ (Android, iOS, Web)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์์ ํ๋ซํผ ๋ณ(Android, iOS, Web)๋ก ์์์ ๊ทธ๋ฆผ์ ํจ๊ณผ๋ฅผ ๋ฃ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒโ AndroidAndroid์์๋ @elevation@ ์์ฑ์ ์ฌ์ฉํด์ ์์์ ๊ทธ๋ฆผ์ ํจ๊ณผ๋ฅผ ๋ฃ์ด์ค ์ ์๋ค.style={{ elevation: 5, // ์ซ์๊ฐ ํด์๋ก ๊ทธ๋ฆผ์๊ฐ ์งํด์ง๋ค. backgroundColor: 'white', // ๋ฐฐ๊ฒฝ์ ์์ด์ผ ๊ทธ๋ฆผ์๊ฐ ๋ณด์ด๋ฏ๋ก ๋ฃ์ด์ค๋ค. borderRadius: 10,}} โก iOSiOS๋ @elevation@ ์์ฑ์ด ์ธ์๋์ง ์๋๋ค.๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ 4๊ฐ์ง ์์ฑ์ ์ฌ์ฉํ์ฌ ์์์ ๊ทธ๋ฆผ์ ํจ๊ณผ๋ฅผ ๋ฃ์ด์ค..
2025.04.06 -
- [React Native] ์์ด์ฝ ์ฌ์ฉํ๊ธฐ (๏ผ expo/vector-icons)์์ด์ฝ ์ฌ์ฉํ๊ธฐ (๏ผ expo/vector-icons)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ์์คํฌ(Expo) ํ๋ก์ ํธ์์ ์์ด์ฝ(Icon)์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค.๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ์ ์์คํฌ ํ๋ก์ ํธ์์๋ ๋ณ๋ค๋ฅธ ํจํค์ง๋ฅผ ์ค์นํ์ง ์๊ณ ๋ ์์ด์ฝ์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค. ๋ฐฉ๋ฒ1๏ธโฃ ํจํค์ง ์ค์นํ๊ธฐ (๏ผ expo/vector-icons)Expo ํ๋ก์ ํธ์์๋ ์ด๋ฏธ ๊ธฐ๋ณธ์ ์ผ๋ก @๏ผ expo/vector-icons@ ํจํค์ง๊ฐ ํฌํจ๋์ด ์์ด์ ๋ฐ๋ก ์ค์นํ ํ์๋ ์๋ค.ํ์ง๋ง, ํด๋น ํจํค์ง๊ฐ ์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ, ์๋ ๋ช ๋ น์ ์คํํ์ฌ ์ค์นํด์ค๋ค.$ expo install @expo/vector-icons 2๏ธโฃ ์์ด์ฝ ์ธํธ ๋ถ๋ฌ์ค๊ธฐ์ฐ์ , ์์ด์ฝ ์ธํธ(Icon Set)๋ฅผ ๋ถ๋ฌ์์ ํด๋น ์์ด์ฝ ์ธ..
2025.04.06 -
- [React Native] ์ปค์คํ ํฐํธ ์ฌ์ฉํ๊ธฐ (expo-font)์ปค์คํ ํฐํธ ์ฌ์ฉํ๊ธฐ (expo-font)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ์์คํฌ(Expo) ํ๋ก์ ํธ์์ ์ปค์คํ ํฐํธ๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ 1๏ธโฃ ํจํค์ง ์ค์นํ๊ธฐํฐํธ ์ฌ์ฉ์ ์ํด @expo-font@ ํจํค์ง๋ฅผ ์ค์นํ๋ค.$ expo install expo-font@expo install@ ๋ช ๋ น์ ํ์ฌ Expo ํ๋ก์ ํธ์ ๋ฒ์ ๊ณผ ํธํ๋๋ ํจํค์ง๋ฅผ ์๋์ผ๋ก ์ค์นํด์ค๋ค. 2๏ธโฃ ํฐํธ ํ์ผ ์ค๋นํ๊ธฐํ๋ก์ ํธ์ @/assets/fonts@ ํด๋ ์์, ์ถ๊ฐํ ์ปค์คํ ํฐํธ ํ์ผ์ ๋ฃ์ด์ค๋ค.ํด๋น ํด๋๊ฐ ์์ ๊ฒฝ์ฐ, ์๋ก ์์ฑํด์ค๋ค. 4๏ธโฃ ํฐํธ ๋ถ๋ฌ์ค๊ธฐ (useFonts ํ )ํ๋ก์ ํธ ์ต์๋จ์ ์๋ @App.js@ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ์ปค์คํ ํฐํธ๋ฅผ ๋ถ๋ฌ์ค๋ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ค๋ค.@use..
2025.04.06 -
- [React Native] SafeAreaViewSafeAreaView๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์ SafeAreaView ์ปดํฌ๋ํธ์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด ๋ณธ๋ค. SafeAreaView๊ฐ๋ React Native์์ ํ๋ฉด ์๋จ์ ์ํ๋ฐ๋ ๋ ธ์น์ ๊ฐ์ UI ์์๋ก๋ถํฐ ์ฝํ ์ธ ๊ฐ ๊ฒน์น์ง ์๋๋ก ์๋์ผ๋ก ์์ ํ ์์ญ์ ์ค์ ํด ์ฃผ๋ ์ปดํฌ๋ํธ@SafeAreaView@ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ๊ธฐ๊ธฐ์์ ์ฝํ ์ธ ๊ฐ ์ ์ ํ๊ฒ ๋ฐฐ์น๋๊ณ , ํ๋ฉด ๊ฐ์ฅ์๋ฆฌ๋ ์๋จ์ ์ค์ํ UI ์์์ ๊ฐ๋ ค์ง์ง ์๊ฒ ๋๋ค. ์ฃผ์ ๊ธฐ๋ฅ๋ ธ์น, ์ํ ๋ฐ, ํ๋จ์ ํ ๋ฐ ๋ฑ๊ณผ ๊ฐ์ ํ๋ฉด ์์๊ฐ ์๋ ๋๋ฐ์ด์ค์์ ์ฝํ ์ธ ๊ฐ ๊ฒน์น์ง ์๋๋ก ์๋์ผ๋ก ์ฌ๋ฐฑ์ ์ถ๊ฐํด ์ค๋ค.๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ํด์๋์ ๋ฐ๋ผ ์์ ์์ญ์ ์๋์ผ๋ก ์ธ์ํ๊ณ , ์ด์ ๋ง๊ฒ ์ฌ๋ฐฑ์ ์ ์ฉํด ์ค๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒReact N..
2025.04.03 -
- [React Native] Alert APIAlert API๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ Alert API์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. Alert API๊ฐ๋ ์ฌ์ฉ์๊ฐ ์๋ฆผ์ ๋์ธ ์ ์๋๋ก ๋์์ฃผ๋ API๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ดํฐ๋ธ(iOS์ Android) ์๋ฆผ ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.์ฌ์ฉ์๊ฐ ์๋ฆผ์ ํ์ธํ๊ฑฐ๋ ์ทจ์ํ ์ ์๋๋ก ๋ฒํผ์ ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ, ๋ค์ํ ์ค์ ๋ฐฉ๋ฒ์ ์ง์ํ๋ค. ์ฌ์ฉ๋ฒ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ@Alert@๋ React Native์์ ๋ด์ฅ๋ ๊ฐ์ฒด๋ก, @alert()@ ๋ฉ์๋๋ฅผ ํตํด ์๋ฆผ์ ๋์ธ ์ ์๋ค.import { Alert } from 'react-native';Alert.alert('์๋ฆผ ์ ๋ชฉ', '์๋ฆผ ๋ฉ์์ง'); ๋ฒํผ ์ถ๊ฐํ๊ธฐ@Alert@๋ ๊ธฐ๋ณธ์ ์ผ๋ก @[ํ์ธ]@ ๋ฒํผ๋ง ์ ๊ณตํ์ง๋ง, ์ฌ๋ฌ ๋ฒํผ์..
2025.04.03 -
- [React Native] npm install vs. expo installnpm install vs. expo install๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) Expo ํ๋ก์ ํธ์์ ํจํค์ง๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ผ๋ก @npm install@๊ณผ @expo install@ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.์ด 2๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. ํจํค์ง ์ค์น ๋ช ๋ น์ด1๏ธโฃ npm install$ npm install ํจํค์ง๋ช Node.js ํจํค์ง ๊ด๋ฆฌ ๋ช ๋ น์ดnpm(Node Package Manager)์ ์ฌ์ฉํ์ฌ, ํ๋ก์ ํธ์ package.json ํ์ผ์ ์ ์๋ ํจํค์ง๋ค์ ์ค์นํ๋ค.Expo ํ๋ก์ ํธ์์ @npm install@์ ์ฌ์ฉํ๋ฉด, Expo์ ๊ด๋ จ๋ ๋ฒ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ง์ ํด๊ฒฐํด์ผ ํ ์ ์๋ค.Expo๊ฐ ์๊ตฌํ๋ ํน์ ๋ฒ์ ์ ํจํค์ง์ ํธํ๋์ง ์์ ์ ์์ผ๋ฏ๋ก ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ผ..
2025.04.03 -
- [React Native] ํ๊ฒฝ ๋ณ์ ํ์ผ ์ฌ์ฉํ๊ธฐ (react-native-dotenv)ํ๊ฒฝ ๋ณ์ ํ์ผ ์ฌ์ฉํ๊ธฐ (react-native-dotenv)๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์์ ํ๊ฒฝ ๋ณ์ ํ์ผ(@env@)์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค.@react-native-dotenv@ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ฐฉ๋ฒ1๏ธโฃ react-native-dotenv ํจํค์ง ์ค์นํ๊ธฐํฐ๋ฏธ๋์ ์๋ ๋ช ๋ น์ ์คํํ์ฌ ํ๋ก์ ํธ์ @react-native-dotenv@ ํจํค์ง๋ฅผ ์ค์นํ๋ค.$ npm install react-native-dotenv # yarn add react-native-dotenv 2๏ธโฃ @.env@ ํ์ผ ์์ฑํ๊ธฐํ๋ก์ ํธ ์ต์๋จ ๊ฒฝ๋ก์ @.env@ ํ์ผ์ ์์ฑํ๊ณ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ค.API_URL=https://api.example.comAPP..
2025.04.03 -
- [React Native] ์นด๋ฉ๋ผ ๊ถํ ์์ฒญ ๋ฉ์์ง ํ์ ๋ฐฉ๋ฒ (Expo)์นด๋ฉ๋ผ ๊ถํ ์์ฒญ ๋ฉ์์ง ํ์ ๋ฐฉ๋ฒ (Expo)๋ค์ด๊ฐ๋ฉฐ์์คํฌ(Expo)๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ํ๋ก์ ํธ์์ ์นด๋ฉ๋ผ ๊ถํ ์์ฒญ ๋ฉ์์ง๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒํจํค์ง ์ค์นํฐ๋ฏธ๋์์ ์๋ ๋ช ๋ น์ ์คํํ์ฌ @expo-camera@ ํจํค์ง๋ฅผ ์ค์นํด์ค๋ค.$ npx expo install expo-camera ์ฑ ์ค์ ํ์ผ ๊ตฌ์ฑํ๊ธฐ (@app.json@)ํ๋ก์ ํธ์ ์ต์๋จ์ ์๋ ์ฑ ์ค์ ํ์ผ(@app.json@)์ ์๋์ ๋ด์ฉ์ ์ถ๊ฐํด์ค๋ค. /app.json{ "expo": { "plugins": [ [ "expo-camera", { "cameraPermission": "Allow $(PRODUCT_NAME) t..
2025.02.24 -
- [React Native] ํด๋ฆฝ๋ณด๋ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ (expo-clipboard)ํด๋ฆฝ๋ณด๋ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ (expo-clipboard)๋ค์ด๊ฐ๋ฉฐ์์คํฌ(Expo)๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ํ๋ก์ ํธ์์ ํด๋ฆฝ๋ณด๋(Clipboard) ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ๊ฐ๋จํ๊ฒ @expo-clipboard@ ํจํค์ง๋ฅผ ์ค์นํ์ฌ ํด๋ฆฝ๋ณด๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค. expo-clipboard ํจํค์ง ์ค์นํ๊ธฐ$ npx expo install expo-clipboard ์ฌ์ฉํ๊ธฐํด๋ฆฝ๋ณด๋์ ๋ณต์ฌํ ๋๋ @Clipboard.setStringAsync()@ ํจ์๋ฅผ ์ฌ์ฉํ๊ณ , ํด๋ฆฝ๋ณด๋์ ์๋(๋ณต์ฌ๋) ๊ฐ์ ๊ฐ์ ธ์ฌ ๋๋ @fetchCopiedText()@ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.import { useState } from 'react';import { View, Text, Button..
2025.02.24 -
- [React Native] blurOnSubmit ์์ฑ๊ณผ submitBehavior ์์ฑblurOnSubmit ์์ฑ๊ณผ submitBehavior ์์ฑ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์ @TextInput@ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์๋ @blurOnSubmit@ ์์ฑ๊ณผ @submitBehavior@ ์์ฑ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. blurOnSubmit ์์ฑ๊ฐ๋ ์ฐ์ @blurOnSubmit@ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ด @TextInput@ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ ์๋ค. { setIsFocused(false); Keyboard.dismiss(); }}/> @blurOnSubmit@ ์์ฑ์ @TextInput@ ์ฐฝ ํ ์คํธ๋ฅผ ์ ๋ ฅํ๊ณ , ์ํฐ(Enter) ๋ฒํผ์ ๋๋ฅด๋ฉด ์ ๋ ฅํ ํ ์คํธ๊ฐ ์ ์ถ(Submit)๋๋๋ก ํด์ฃผ๋ ์์ฑ์ด๋ค.๋ฐ๋ผ์ ํ ์คํธ ํ๋๊ฐ ๋ธ๋ฌ ์ฒ๋ฆฌ๋๊ฒ ๋๋ค.๊ธฐ๋ณธ๊ฐ์..
2025.02.23 -
- [React Native] TailwindCSS IntelliSense ํ์ฑํํ๊ธฐ (VS Code)TailwindCSS IntelliSense ํ์ฑํํ๊ธฐ (VS Code)๋ค์ด๊ฐ๋ฉฐVS Code์์ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)๋ฅผ ์ด์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋, TailwindCSS IntelliSense๋ฅผ ํ์ฑํ ์ํค๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ(1) Tailwind CSS IntelliSense ํ์ฅ ์ค์นํ๊ธฐVS Code์์ Tailwind CSS IntelliSense ํ์ฅ์ ์ค์นํ๋ค. Tailwind CSS IntelliSense - Visual Studio MarketplaceExtension for Visual Studio Code - Intelligent Tailwind CSS tooling for VS Codemarketplace.visualstudio.com (2) Tailwi..
2025.02.19 -
- [React Native] ํด๋ฆญ ์, ๋ฆฌํ ํจ๊ณผ(Ripple Effect) ์ฃผ๋ ๋ฐฉ๋ฒํด๋ฆญ ์, ๋ฆฌํ ํจ๊ณผ(Ripple Effect) ์ฃผ๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์์ ์์ ํด๋ฆญ ์, ๋ฆฌํ ํจ๊ณผ(Ripple Effect)๋ฅผ ์ค ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ์ฐ์ ํน์ ์์์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ฃ๊ธฐ ์ํด์๋ @Pressable@ ์ปดํฌ๋ํธ๋ก ํด๋น ์์๋ฅผ ๊ฐ์ธ์ค์ผ ํ๋ค.import { View, Text, Pressable } from 'react-native';function MyComponent(props) { return ( {/* ํด๋ฆญ ํจ๊ณผ๋ฅผ ๋ฃ์ ์์๋ฅผ ๊ฐ์ธ์ค๋ค. */} {props.text} );} Android OS@Pressable@ ์ปดํฌ๋ํธ์ @android_ripple@ ์์ฑ์ ์ถ๊ฐํ์ฌ ์์ ํด๋ฆญ..
1 2024.12.11 -
- [React Native] FlatListFlatList๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native)์ @FlatList@ ์ปดํฌ๋ํธ์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. FlatList๊ฐ๋ ํจ์จ์ ์ผ๋ก ๋๋์ ์คํฌ๋กค ๊ฐ๋ฅํ ํญ๋ชฉ์ ๋ ๋๋งํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธ์ต์ ํ๋ ๊ฐ์ ์คํฌ๋กค๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ค์ด๊ณ , ์คํฌ๋กค ์ ํ์ํ ํญ๋ชฉ๋ง ๋ ๋๋งํ๋ค.@ScrollView@ ์ปดํฌ๋ํธ์์ ์ฐจ์ด์ ์ฃผ์ ์์ฑ์์ฑ์ค๋ช @data@- ๋ ๋๋งํ ๋ฐ์ดํฐ ๋ฐฐ์ด(Array)์ ์ ๋ฌ- ๋ฐฐ์ด์ ๊ฐ ์์๋ ๋ ๋๋ง๋ ํญ๋ชฉ์ ๋ฐ์ดํฐ@renderItem@- ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ ๋๋งํ ์ง ์ ์ํ๋ ํจ์- ๋งค๊ฐ๋ณ์๋ก @{ item, index }@ ํํ์ ๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ค.@keyExtractor@- ๊ฐ ํญ๋ชฉ์ ๊ณ ์ ํค๋ฅผ ๋ฐํํ๋ ํจ์- ๊ธฐ๋ณธ์ ์ผ๋ก @item.key@ ๋๋ @item.id@๋ฅผ ์ฌ์ฉ..
2024.12.10 -
- [React Native] Expo Go ์ฑ์์ Expo ํ๋ก์ ํธ ์ฐ๊ฒฐ ์๋๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ (There was a problem running the requested app)Expo Go ์ฑ์์ Expo ํ๋ก์ ํธ ์ฐ๊ฒฐ ์๋๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ (There was a problem running the requested app)๋ค์ด๊ฐ๋ฉฐExpo Go ์ฑ์์ PC์์ ์์ฑํ Expo ํ๋ก์ ํธ๋ฅผ ์ฐ๊ฒฐํ ๋, ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒโ ๋์ผํ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํ๊ธฐPC์ Expo Go ์ฑ์ด ์ค์น๋ ๋ชจ๋ฐ์ผ ์ฅ์น๊ฐ ๋ชจ๋ ๋์ผํ ๋คํธ์ํฌ(์์ดํ์ด)์ ์ ์๋์ด ์๋์ง ํ์ธํ๋ค. โก ์ ์ดํ์์ NodeJS ๊ด๋ จ ๊ธฐ๋ฅ ์ค์ ํ๊ธฐ[์ ์ดํ] > [์์คํ ๋ณด์] > [Windows Defender ๋ฐฉํ๋ฒฝ] > [ํ์ฉ๋๋ ์ฑ]์์ @NodeJS JavaScript Runtime@ ํญ๋ชฉ์ @[๊ฐ์ธ]@, @[๊ณต์ฉ]@์ ๋ชจ๋ ์ฒดํฌํด์ค๋ค.
2024.11.26 -
- [React Native] Expo CLI vs. React Native CLIExpo CLI vs. React Native CLI๋ค์ด๊ฐ๋ฉฐ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ(React Native) ํ๋ก์ ํธ ์์ฑ ๋ฐฉ๋ฒ์ผ๋ก Expo CLI ์ React Native CLI ๋ฐฉ๋ฒ 2๊ฐ์ง๊ฐ ์๋ค.์ด ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค. Expo CLI๊ฐ๋ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ก ์ฑ์ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ๋๋ ๋๊ตฌํ๋ก์ ํธ ์์ฑ, ๊ด๋ฆฌ, ์คํ์ ๊ฐ๋จํ๊ฒ ํด์ฃผ๋ ๋ช ๋ น์ค ์ธํฐํ์ด์ค(Command Line Interface)๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ถ์ฅ๋๋ ์ ๊ทผ ๋ฐฉ์ ์ ํ๋ก์ ํธ ์์ฑํ๊ธฐ$ npx create-expo-app@latest # ์ ํ๋ก์ ํธ ์์ฑ ์ฃผ์ ํน์ง๊ธฐ๋ณธ ํ ํ๋ฆฟ์ ์ ๊ณตํ์ฌ ์ด๊ธฐ ์ค์ ์์ด ๋ฐ๋ก ์ฑ ๊ฐ๋ฐ ์์ ๊ฐ๋ฅ์นด๋ฉ๋ผ, ์์น ์ ๋ณด, ํธ์ ์๋ฆผ ๋ฑ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ ..
2024.11.25