우선 설치..
yarn add @react-navigation/bottom-tabs
import React, { useEffect } from 'react';
import { Platform } from 'react-native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import MainPage from '../pages/MainPage';
import MyPage from '../pages/MyPage';
import AddPage from '../pages/AddPage';
const Tabs = createBottomTabNavigator();
const TabNavigator = ({ navigation, route }) => {
return (
<Tabs.Navigator
tabBarOptions={{
showLabel: true,
style: {
backgroundColor: '#fff',
borderTopColor: '#eee',
height: 40,
fontSize: 10,
},
activeTintColor: 'tomato',
inactiveTintColor: 'gray',
}}
>
<Tabs.Screen name="MainPage" component={MainPage} />
<Tabs.Screen name="MyPage" component={MyPage} />
<Tabs.Screen name="AddPage" component={AddPage} />
</Tabs.Navigator>
);
};
export default TabNavigator;
import React from 'react';
//설치한 스택 네비게이션 라이브러리를 가져옵니다
import { createStackNavigator } from '@react-navigation/stack';
//페이지로 만든 컴포넌트들을 불러옵니다
import SignInPage from '../pages/SignInPage';
import SignUpPage from '../pages/SignUpPage';
import DetailPage from '../pages/DetailPage';
import TabNavigator from './TabNavigator';
//스택 네비게이션 라이브러리가 제공해주는 여러 기능이 담겨있는 객체를 사용합니다
//그래서 이렇게 항상 상단에 선언하고 시작하는게 규칙입니다!
const Stack = createStackNavigator();
const StackNavigator = () => {
return (
//컴포넌트들을 페이지처럼 여기게끔 해주는 기능을 하는 네비게이터 태그를 선언합니다.
//위에서 선언한 const Stack = createStackNavigator(); Stack 변수에 들어있는 태그를 꺼내 사용합니다.
//Stack.Navigator 태그 내부엔 페이지(화면)를 스타일링 할 수 있는 다양한 옵션들이 담겨 있습니다.
<Stack.Navigator
screenOptions={{
//헤더 숨기기
headerShown: false,
}}
>
{/* 컴포넌트를 페이지로 만들어주는 엘리먼트에 끼워 넣습니다. 이 자체로 이제 페이지 기능을 합니다*/}
<Stack.Screen name="TabNavigator" component={TabNavigator} />
<Stack.Screen name="SignInPage" component={SignInPage} />
<Stack.Screen name="SignUpPage" component={SignUpPage} />
<Stack.Screen name="DetailPage" component={DetailPage} />
</Stack.Navigator>
);
};
export default StackNavigator;
탭 네비게이션에 이용할 페이지들을 가져와서
스택 네비게이션과 비슷하게 아래쪽에 정렬해줬음
물론 탭 네비게이션 또한 배치순서대로 화면에 보여진다(main-my-add)
StackNavigator파일에서 TabNavigator에서 관리할 페이지를 삭제해주고
<Stack.Screen name="TabNavigator" component={TabNavigator} />를 사용하였다.