1ํธ์ ์ด์ด์ bottom tabs ๋ฉ๋ด์ stack ๋ฉ๋ด๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๋ฒ์ ์ค๋ช ํ๋ ค๊ณ ํฉ๋๋ค!
์ดํ๋ฆฌ์ผ์ด์ ์์ ๋๊ฐ์ง ๋ฉ๋ด๊ฐ ๋ฐ๋ก๋ฐ๋ก ์ฌ์ฉ๋ ์ผ์ ์๊ฒ ์ง์?
ํด๋๊ตฌ์กฐ
Nav
-Tab
-Stack
Screen
-Movie
-Tv
-Search
NavigationContainer ์ ๋ ๋ฉ๋ด๋ฅผ ๋ชจ๋ ์ ์ด์ค์ผํฉ๋๋ค. tab์ stack ๋ฉ๋ด๋ฅผ ๋ฐ๋ก ์ด ์ปดํฌ๋ํธ๋ฅผ Root.js ๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ ํฉ์ณ์ค๋๋ค.
Root.js
root๋ฅผ app.js์์ importํด์ฃผ๋ฉด ๋๊ฐ์ง ๋ฉ๋ด๊ฐ ๋ชจ๋ ์คํฌ๋ฆฐ์ ๋น๋๋ค. ์ด ๋ ํ์์๋ ํค๋๋ถ๋ถ์ ์ง์์ฃผ๊ธฐ ์ํด์ screenOptions์ headerShown์ ๋ช ํํ๊ฒ ์จ์ค๋๋ค.
const Nav = createNativeStackNavigator()
const Root = () => <Nav.Navigator screenOptions={{headerShown: false, animation : "fade"}}>
<Nav.Screen name="Tabs" component={Tabs}/>
<Nav.Screen name="Stack" component={Stack}/>
</Nav.Navigator>
export default Root
App,js
export default function App() {
return (
<NavigationContainer>
<Root/>
</NavigationContainer>
);
}
์ด์ ์ค์ ๋ก ๋ ๋ฉ๋ด๊ฐ ์ ์ฉ๋ ํ์ด์ง ์ปดํฌ๋ํธ๋ก ๋์ด๊ฐ๋๋ค.
ํ์ด์ง ์ปดํฌ๋ํธ ์ค์ธ ํ๋์ธ Movie.js ๋ถ๋ถ์ ๋๋ค.
onPress์ navigate๋ฅผ ์ฐ๊ณ ์์ชฝ์ ๋ช ํํ๊ฒ ์ด๋ํ์ถ์ ๋ฉ๋ด๋ฅผ ์๋๋ค.
tab ๋ฉ๋ด์ ์๋ movie๋ฅผ ํด๋ฆญํ๋ฉด stack ๋ฉ๋ด์ three ํ์ด์ง๋ก ์ด๋ํ๋ค๋ ์๋ฏธ์ ๋๋ค!
const Movie = ({navigation: { navigate }}) => (
<TouchableOpacity
onPress={() => navigate("Stack", { screen : "Three"})}>
<Text>Movie</Text>
</TouchableOpacity>
)
export default Movie
โพ ์์ ์์ฑ!
'๊ฐ๋ฐ > React-Native' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(ios) EAS๋ก expo ๋น๋ํ๊ณ testFlight์ ๋ฑ๋กํ๊ธฐ (feat.์ค๋ฅ) (0) | 2024.11.22 |
---|---|
[react-native] weekly calendar ๋ฃ์ด๋ณด๊ธฐ (0) | 2024.10.31 |
[React Native] React Nativgation ์ ์ฉํ๊ธฐ - 1 (0) | 2022.03.09 |
[React Native] AppLoading (0) | 2022.02.28 |
[React-Native] ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ์์ํ๊ธฐ( with Expo) (0) | 2022.02.21 |