1. React Navigation
1yarn add @react-navigation/native23# expo ์ฌ์ฉ ์ ์ถ๊ฐ ์ค์น4yarn add react-native-screens react-native-safe-area-context56# cf. https://reactnavigation.org/docs/hello-react-navigation#installing-the-native-stack-navigator-library7yarn add @react-navigation/native-stack
- React-Native์์ ์ฌ์ฉํ๋ ํ๋ฉด ์ด๋์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Stack, BottomTab, Drawer๋ฑ ์ฑ ๊ฐ๋ฐ์ ๋ง์ด ์ฌ์ฉํ๋ ํ๋ฉด ์ด๋์ ๋ํด,
- ๊ฐ ํ๋ซํผ ํ๊ฒฝ์ ๋ง๋๋ก ์ฝ๊ฒ ๋ณํ ํด ์ฃผ๋๋ก ๋์ด์์
- cf. https://reactnavigation.org/
- cf. https://reactnavigation.org/docs/getting-started/#installation
- ๊ตฌ์ฑ์์ :
Navigator + ScreenNavigator: Navigation์ด ์ด๋ค ๊ตฌ์กฐ๋ก ๋์ด์๋์ง ๋ํ๋ด๋ ์ปดํฌ๋ํธ (Screen์ ์งํฉ)Screen: ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ปดํฌ๋ํธ
1.1 Stack Navigator
- Stack๊ณผ ๋์ผํ ์๋ฃ ๊ตฌ์กฐ๋ก ํ๋ฉด์ ๊ทธ๋ฆฌ๋ Navigator
- ์ ์ผ ๋ง์ง๋ง์ ๋ค์ด์จ ํ๋ฉด์ด ์ ์ผ ๋จผ์ ์์ด์ง
- React-Navigation์์ ํ์ํ ์ ๋๋ฉ์ด์ ๋ฑ์ ๊ตฌํ ๋จ
Stack Navigator: JS๋ก ์์ฑ, ์์ ๋ ๋์Native Stack Navigator: Native๋ก ์์ฑ ์์ ๋ ๋ฎ์
1.2 Drawer Navigator
- ์ฌ๋ผ์ด๋๋ฅผ ํตํด์ ์ด๋ํ Screen๋ค์ ๋ํ๋ด๋ Navigator
- Drawer์ ๋ํ open, close, toggle๋ฑ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๋ค์ ํจ์๋ก ์ ๊ณต
- Gmail, LinkedIn๋ฑ์์ ์ฌ์ฉ
1.3 Tab Navigator
1# https://reactnavigation.org/docs/tab-based-navigation2yarn add @react-navigation/bottom-tabs
- ๊ฐ์ฅ ํํ๊ฒ ์ฑ์์ ๋ณผ ์ ์๋ UI
- ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋จ์ ํญ์ ํํ๋ก ์ ๊ณต
- Material UI๋ฅผ ํตํด์ ์ ๊ณตํ๋ ๋ณ๋ UI๋ ์ ๊ณต
- (Material Bottom Tabs Navigator, Material Top Tabs Navigator)
2. React Life cycle
- constructor โ render โ componentDidMount โ componentWillUnmount
3. ์ฉ์ด ์ ๋ฆฌ
Navigator- ํ๋ฉด์ ์ด๋ป๊ฒ ๊ทธ๋ ค์ค์ง ๊ฒฐ์ ํด์ฃผ๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ (e.g. ์ฑ ๊ฒํ์ง)
Navigation Container: ์ ์ฒด Navigator๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์ญํ
Router- Navigation์ ์ํ๋ ๋์์ ์ ์ดํด์ฃผ๋ ํจ์์ ์งํฉ.
- ์ฃผ๋ก ํ๋ฉด๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ ์ํด ์ฌ์ฉ
Screen: ํ๋ฉด์ ๊ทธ๋ ค์ฃผ๋ ์ปดํฌ๋ํธ (e.g. ์ฑ ์์ ์ข ์ด ํ์ฅ)Navigation Prop: ํ๋ฉด ์ด๋์ ๋ํ ํจ์๋ค์ ๊ณตํต์ผ๋ก ์ ๊ณตRoute Prop: ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์์ค๊ฑฐ๋ ์ด๋ค ํ๋ฉด์ธ์ง ์ด๋ฆ์ ์ ์ ์๋ ๊ฐ๋ค์ ์ ๊ณตํด์ฃผ๋ ์ญํNavigation State- ํ์ฌ React Navigation์ด ์ด๋ค ์ํ์ธ์ง๋ฅผ ์ ์ ์๋ ๊ฐ
- ์ฃผ๋ก Stack Navigator ์ด์ Stack์ ์ด๋ค Screen์ด ์๋์ง ์ฐพ๊ธฐ ์ํด ์ฌ์ฉ
Route- Screen์ Name, Key, Param๋ฑ์ ์ ์ฅํ๋ ๊ฐ๋
- ์ด๋ค ํ๋ฉด์ธ์ง ์๋ณ ํ๊ธฐ ์ํด ์ฌ์ฉ.
- Navigation State ํ์์ Routes๋ผ๋ ๋ฐฐ์ด์์ ์ฐพ์์ ์์
4. Stack Navigator Screen ์ต์
4.1 presentation
- Stack Navigator์์ ํ๋ฉด ์ด๋ ์ ๋๋ฉ์ด์
์ ๋ํ ์ค์ ์ต์
Card: ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ ์ ๋๋ฉ์ด์ Modal: ์๋์์ ์๋ก ์ด๋ํ๋ ์ ๋๋ฉ์ด์
4.2 backBehavior
- Android์์ H/W Back Button์ ๋๋ ์๋ ์ด๋ป๊ฒ ์ด๋ ํ๋์ง ์ง์
firstRoute: ์ ์ธ์ ์ ์ผ ์ฒ์์ ์๋ ํญ์ผ๋ก ์ด๋initialRoute: ์ต์ด ์ง์ ํ ํญ์ผ๋ก ์ด๋order: ํญ์ ์ ์ธํ ์์ผ๋ก ์ด๋history: ์ด๋ํ ํ์คํ ๋ฆฌ ์ญ์์ผ๋ก ์ด๋
5. Nesting Navigator
- Navigator์ Screen์ Component๊ฐ ์๋ ๋ค๋ฅธ Navigator๋ก ์ ์ธํ๋ ๊ฒ.
- ์ฃผ๋ก, Presentation์ ๋ค๋ฅด๊ฒ ์ ์ธํ๊ฑฐ๋, ์กฐ๊ฑด์ ๋ฐ๋ผ Navigator์ ๋ถ๊ธฐ๊ฐ ํ์ํ ๋ ์ฌ์ฉ
5.1 ์ฃผ์์
1A ๋ค๋น๊ฒ์ดํฐ โ C ์คํฌ๋ฆฐ2โ B ๋ค๋น๊ฒ์ดํฐ โ D ์คํฌ๋ฆฐ
- Navigator๋ ๊ฐ์์ History๋ฅผ ๊ฐ์ง๊ณ ์์
- Navigator์์ Screen Param์ ์ ๋ฌ๋์ง ์์
- B Navigator์์ ๋์ํ ์ ์์ผ๋ฉด A Navigator๋ก ์ ๋ฌ
- Navigator A์ ์ด๋ฒคํธ๋ฅผ Navigator B์์ ๋ฐ์ ๋ณผ ์๋ ์์
- focus, blur๋ฑ. ํ์ํ ๊ฒฝ์ฐ getParent๋ก ์ฐพ์ ๋ฑ๋กํด์ผ ํจ
- Tab, Drawer์ ํ์ Navigator์ผ ๊ฒฝ์ฐ Tab ๋๋ Drawer์ ๊ฐ๋ ค์ง
6. DeepLink
1https://abc.com/def23https:// =====> Scheme4abc.com/def =====> Path
- ํน์ URL์ ๋๋ฅด๊ฒ ๋๋ฉด ์ง์ ํ ํ๋ฉด์ผ๋ก ์ด๋ ํ๋๊ฒ.
- ์ฑ๋ง๋ค ์ ํจํ scheme์ ๊ฐ์ง๊ณ ์๋๊ฒ
6.1 Universal Link, App Links
- ์๋๋ก์ด๋์์ DeepLink๋
App Links๋ก ๋ถ๋ฅด๊ณ , - iOS์์ DeepLink๋
Universal Link๋ผ๊ณ ๋ถ๋ฅธ๋ค. - ๋ฌด๋จ์ผ๋ก Scheme์ ๋นผ์์ ๊ฐ๋ ํ์์ ๋ง๊ธฐ ์ํจ
- ๊ฐ๊ฐ ํ๋ซํผ์์์ ๋๋ฉ์ธ ์ธ์ฆ๋จ๊ณ๋ฅผ ํต๊ณผ ํด์ผํจ
7. Action
- ํ๋ฉด ์ด๋์ ๋ํ ๋ช ๋ น์ด๋ฅผ ๋ด๊ณ ์๋ Object
- e.g. ์ฑ ์์ N ํ์ด์ง๋ก ์ด๋, ์ด์ ํ์ด์ง๋ก ๋์๊ฐ๊ธฐ ๋ฑ
7.1 Action ๊ตฌ์กฐ
type: ์ด๋ค ์์ ์ธ์ง ๋ํ๋ด๋ ์๋ณ์payload: ์ถ๊ฐ ์ ๋ณด๊ฐ ํฌํจ๋์ด์์. (parameter)
7.2 CommonAction
navigate: ํน์ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ actionreset: ํ์ฌ ์ํ๋ฅผ ์ง์ ํ ์ํ๋ก ๋ณ๊ฒฝํด์ฃผ๋ actiongoBack: ์ด์ ํ์คํ ๋ฆฌ๋ก ์ด๋ํด์ฃผ๋ action
7.3 StackAction
push: ์๋ก์ด ํ๋ฉด์ ์ต์๋จ์ ๋ฃ๋๊ฒpop: ํ์ฌ ๋ณด์ด๊ณ ์๋ ํ๋ฉด์ ๊บผ๋ด๋๊ฒ
7.4 StackAction push vs CommonAction navigate
push: ์ ์ผ ๋ง์ง๋ง ํ๋ฉด์ผ๋ก ๊ณ์ ๋ฃ๋ Actionnavigate: ์ด์ Stack์ ๋์ผํ Screen์ ๊ฐ์ง๊ณ ์๋ค๋ฉด pop์ก์ ๋ ์ํ
7.4 TabAction
jumpTo: ํญ๊ฐ ์ด๋ ํด์ผ ํ ๋ ์ฌ์ฉ