2024. 11. 11. 16:45ใStudy_Develop/React Native
์๋ ํ์ธ์.
์ค๋์ ๋ฒ์จ ์ ์ Capstone์ ์ค๋ช ํ๋ ์ธ ๋ฒ์งธ ์๊ฐ์ด๋ค์!
์ผ๋จ ์ ํฌ๋.. ์ด๋ ํ ์ปค๋ฎค๋ํฐ ์ดํ์ ์ ์ํ์์ด์
์ด๋ค ์ปค๋ฎค๋ํฐ์ธ์ง๋ ๋์ค์ ๋ฐ๋ก ํฌ์คํ ํ ๊ฒ์ ^__^
์ํผ ์ ๋ ํ๋ก ํธ ๊ฐ๋ฐ์ ์ ๋ถ ๋งก๊ฒ ๋์๋๋ฐ
๊ทธ๋์ ์ ๊ฐ ์ด๋ค ์คํ์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ ์ ์๋ ๊ฒฐ์ ๊ถ์ด ์์์ด์.
์ง๊ธ๊น์ง ์๋๋ก์ด๋ ์ดํ์ ๋ง๋๋ ์คํ์ Kotlin, React Native ๋ ๊ฐ์ง๋ฅผ ๊ฒฝํํด ๋ณด์๋๋ฐ
๋ ์ค์ ๋ญ๋ก ํ ๊น... ๊ณ ๋ฏผํ๋ค๊ฐ
React Native ๋ฅผ ์ ํํ๊ฒ ๋์์ด์.
์๋ํ๋ฉด
์ React Native๋ฅผ ์ ํํ์๋์ง?
์ ๋ React Native๋ณด๋ค Kotlin์ด ์ข ๋ ๋ฏธ์ํ์ด์.
๊ทธ๋์ ๊ธฐํ์ ์ข ๋ ๊น๊ฒ ๊ณต๋ถํด ๋ณด์!๋ผ๋ ๋๋์ผ๋ก
Kotlin์ ์ธ์ณค์ง๋ง ๋งํ์ React Native๋ก ํด์ผ๊ฒ ๋ค.. ํด์ ๊ณํ์๋ฅผ ์์ ํด์ ์ ์ถํ์์ฃ ..ใ ใ
๋ ๊ฐ์ง ์ด์ ๊ฐ ์์๋๋ฐ
์ฒซ ๋ฒ์งธ๋, ์ ๋ ํผ์ ํ๋ก ํธ ์ ๋ฌด๋ฅผ ๋ค ๋งก๊ฒ ๋์ด์
๋น ๋ฅธ ์๊ฐ ์์ ํ๋ฉด์ ๋ค ๋ง๋ค์ด์ผ ํ๋ค๋ ์๋ฌด๊ฐ ์์์ด์!
๋น ๋ฅด๊ฒ ๊ฐ๋ฐํด์ผ ํ๋ ์ํฉ์์ React Native์ Hot reload ๊ธฐ๋ฅ ๋ชป ์์ด...
์ฝํ๋ฆฐ์ ์๋ ์ฌ๋ก๋ ๊ธฐ๋ฅ์ด ์ข ๋๋ ค์ ํ์ฐธ ๋ก๋ฉ ๋๋ ๊ฒฝ์ฐ๋ ๋ง์์
์ข ๋ต๋ตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ
React Native๋ ์์ฃผ ๋น ๋ฅด๊ฒ ๋ฐ๋๊ฑฐ๋ ์!
์ด๊ฒ ๋๋ฌด ์ข์์ด์
์ผ๋จ React Native์ ๊ฐ๋ฐ์๋๊ฐ ๋ ๋น ๋ฅด๋ค
์ด๊ฒ ์ฒซ ๋ฒ์งธ ์ด์ ์ด๊ณ
๋ ๋ฒ์งธ ์ด์ ๋ ์ ํฌ๊ฐ Firebase๋ก ์ผ๋ถ ์๋ฒ๋ฅผ ๊ตฌํํ๊ธฐ๋ก ํ์๋๋ฐ,
Firebase ์๋ React Native ๊ฐ ์ข ๋ ํธํ์ด ์๋๋ค??๋ผ๋ ๋ง์ด ์์ด์!
ํนํ ์ด๋ฐ React Native๋ Firebase์ ์ฐ๋ํด์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ๋ค์ ๋ณด๋
๊ฒฐ์ ํ๊ธฐ์ ๋์ฑ ์ฌ์ ๋ ๊ฑฐ ๊ฐ์ต๋๋ค.
React Native ๊ธฐ๋ณธ ๋ผ๋ ์ก๊ธฐ( navigation ์ค์ ๋ฐ ํด๋ ๊ตฌ์กฐ)
์ฐ์ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ ์ ๋ navigation๋จผ์ ์ค์ ํด ์ฃผ์์ด์.
navigation์ด ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๋ผ๋๋ฅผ ์ก์์ค๋ค๋ ๋๋์ด ์์ด์
์ผ๋จ navigation์ด ๋ฑ~ ๋ฌด๊ฒ๋ฅผ ์ก์์ฃผ๋ฉด ๋ญ๋๊น ํ๋ก์ ํธ์ ์ ๋ฐ์ด ์์ฑ๋์๋ค๋ ๋๋์ด...(์๋)
๊ณ ๋ คํด์ผ ๋ ์ฌํญ์ ํ๋ก์ ํธ๋ง๋ค ๋ฌ๋ผ์
์ผ๋จ ์๋ ์ฌ์ง์ ์ ๊ฐ ์ ์ํ figma ๊ธฐํ์์ ๋๋ค ใ
๋์์ธํ๋ ๊ฒ ์๊ทผํ ์ฌ๋ฏธ๋ ์์ผ๋ฉด์
์ด๋ ต๋๋ผ๊ณ ์
๊ทธ๋๋ ๋ญ๊ฐ ์ด๋ฐ ๊ฐ๋จํ?? ๋์์ธ์ ์ฌ๋ฏธ๋ ๊ฑฐ ๊ฐ์์
๋ก๊ณ ๋ ๋ค ์ง์ ์ ์ํ์ด์!
์ด๋ค๊ฐ์?
ใ ใ ใ
์์ฆ๋ง์ผ๋ฉด์...
์ ์ฐธ, ๋ก๊ณ ๋ ์บ๋ฐ๋ก ์ ์ํ์ด์...ใ ใ ใ ใ
์์ฆ ์บ๋ฐ, ๋ฏธ๋ฆฌ์บ๋ฒ์ค ๊ธฐ๋ฅ์ด ์์ฒญ ์ข๋๋ผ๊ณ ์ ๐๐
๋จธ ์ํผ!
์ ๋ ํฌ๊ฒ
- ์์ํ๋ฉด
- ๋ก๊ทธ์ธ/ํ์๊ฐ์ ํ๋ฉด
- ๋ฉ์ธํ๋ฉด
์ธ ๊ฐ์ง์ stack์ผ๋ก ๋๋์ด์ผ๊ฒ ๋จ ์๊ฐ์ ํ์์ด์
์ฌ๊ธฐ์ ์์ฃผ ์ด์ง ๊ณ ๋ คํด์ผ ํ ์ ์
๋ฉ์ธํ๋ฉด์์๋ง
์ด๋ฐ bottom navigation์ด ๋ณด์ด๊ฒ ๋๋๋ฐ
๋ฉ์ธํ๋ฉด ์์์๋ bottom navigation์ด ๋ณด์ด๋ ํ๋ฉด์ด ์๊ณ
bottom navigation์ด ์ ๋ณด์ด๋ ํ๋ฉด์ด ์์ ๊ฑฐ ์๋ ์
๊ทธ๋์ MainStack.Screen ์คํ ์์
MainBottomScreen์ด๋ผ๋ Tab.Navigator์ ๋ง๋ค์์ด์!
์ด๊ฒ ๊ณง ์คํ ์์ ๋ ๋ค๋ฅธ ๋ด๋น๊ฒ์ดํฐ๊ฐ ์๋ ํํ์ธ ๊ฑฐ์ฃ
์ฝ๋๋ก ์ดํด๋ณด๋ฉด
export default function AppStackNavigation() {
return (
<AppStack.Navigator>
<AppStack.Screen
name="StartScreen"
component={StartScreen}
options={{headerShown: false}}
/>
<AppStack.Screen
name="AuthStack"
component={AuthStackNavigation}
options={{
headerShown: false,
}}
/>
<AppStack.Screen
name="MainStack"
component={MainStackNavigation}
options={{headerShown: false}}
/>
</AppStack.Navigator>
);
}
์ด๊ฑด ๊ฐ์ฅ ํฐ?
๊ฐ์ฅ ๋ผ๋๊ฐ ๋๋ ์ฑ์ stack ์ด์ฃ
์์์ ๋งํ ์์ํ๋ฉด, ์ธ์ฆ ํ๋ฉด, ๋ฉ์ธํ๋ฉด์ผ๋ก ์คํ์ ์ธ ๊ฐ ์์์ค์
์์ํ๋ฉด์ ํ๋ฉด์ด ํ๋๋ผ ๊ทธ๋ฅ ๋ฐ๋ก ๋ฉ์ธ ์คํ์ ๋ฃ์ด์ฃผ์๊ณ
export default function AuthStackNavigation() {
const AuthStack = createNativeStackNavigator();
return (
<>
<AuthStack.Navigator>
<AuthStack.Screen
name="LoginScreen"
component={LoginScreen}
})}
/>
.
.
.
๋ก๊ทธ์ธ/ํ์๊ฐ์ ์คํ์ ํ๋ฉด์ด ์ฌ๋ฌ ๊ฐ์ง๋ผ
์ด๋ ๊ฒ ์คํ๋ค์ ์ ์ํด ์ค์
export default function MainStackNavigation() {
const MainStack = createNativeStackNavigator();
return (
<>
<MainStack.Navigator>
<MainStack.Screen
name="MainBottomScreen"
component={MainBottomScreen}
options={{headerShown: false}}
/>
<MainStack.Screen
name="ProfileSettingScreen"
component={ProfileSettingScreen}
.
.
.
๋ค์์ ๋ฉ์ธํ๋ฉด!
์์์ ๋งํ ๊ณ ๋ ค์ฌํญ์ ํด๊ฒฐํ๊ธฐ ์ํด
export default function MainBottomScreen() {
const Tab = createBottomTabNavigator();
return (
<View style={{height: '100%'}}>
<Tab.Navigator
initialRouteName="๋ฉ์ธํ๋ฉด"
.
.
})}>
<Tab.Screen
name="์ฑํ
"
component={ChattingRoomListScreen}
.
.
/>
<Tab.Screen
name="๋ฉ์ธํ๋ฉด"
component={HomeScreen}
.
.
/>
<Tab.Screen
name="ํ๋กํ"
component={ProfileScreen}
.
.
/>
</Tab.Navigator>
</View>
);
}
์ค๋ช ์ ์ํด ๋ค๋ฅธ ์ต์ ๋ค์ ์ง์ ์ด์!
์ฌ๊ธฐ Tab.Navigator ํ๋ฉด์ ๋ง๋ค์ด ๊ฐ๊ฐ ๋ฃ๊ณ ์ถ์ ์คํฌ๋ฆฐ๋ค์ ์ ์ํ๋ฉด ๋ฉ๋๋ค!
์ฌ๊ธฐ์ ๋ค์ด๊ฐ๋ Stack ๋ถ๋ถ์๋ Bottom navigation์ด ํ์๋๊ฒ ์ฃ ?
Bottom navigaion์ด ํ์ํ์ง ์์ ๋ฉ์ธ ์คํ์ ํ๋ฉด๋ค์
MainStackNavigation์ ์ถ๊ฐ๋ก ์ ์ํด ์ฃผ๋ฉด ๋ฉ๋๋ค!
๋~~
์ฌ๊ธฐ์ name์ผ๋ก ์ ์ํด ๋ ํ๋ฉด์ผ๋ก
์์ ๋กญ๊ฒ ํ๋ฉด ๊ฐ ์ด๋์ด ๊ฐ๋ฅํด์ง๋๋ค!
์ด๊ฑธ ์ฐ์ ์ ์ํ๊ณ ๋์...
๋ค์์ผ๋ก๋ ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ์ํด ๋์์ด์
ํ๋ก์ ํธ ๊ธฐ๋ณธ ๊ตฌ์กฐ
src
โโโ network
โ โโโ client
โ โโโ api-endpoint.js
โ โโโ http-client.js
โ โโโ index.js
โโโ assets
โ โโโ images
โโโ components
โ โโโ AuthStackComponent
โโโ constants
โ โโโ colors
โ โโโ data
โโโ navigation
โโโ redux
โ โโโ slices
โ โโโ store
โโโ screens
โโโ utils
โ โโโ constants
โโโ styles
โโโ App.tsx
โโโ index.tsx
โโโ serverAccountKey.json
httpํต์ ์ network๋จ์ ๋ฐ๋ก
assetํด๋์ ์ด๋ฏธ์ง
component ํด๋์ ๊ฐ์ข ์ปดํฌ๋ํธ๋ค
constants ํด๋์ colors, data ๋ค
navigation
redux
screens
utils
styles
ํด๋๋ก
ํด๋๋ฅผ ์ ์ํด ๋์์ด์
์ค๋์ ํฌ์คํ ๋!

๋ค์ ํฌ์คํ ์๊ฐ์ ๋ด ์๋น~~~