프론트엔드 개발자의 개발 놀이터

Drawer Navigator 등록 방법 본문

React Native

Drawer Navigator 등록 방법

프론트포텐 2024. 2. 7. 11:24
반응형

화면에서 햄버거 메뉴 버튼을 누를 시 좌측 또는 우측 사이드바가 나오는 화면을 만들고 싶을 땐 Drawer Navigator를 사용하면 됩니다.

 

1. 설치

yarn add @react-navigation/drawer

 

2. 등록

여기서 기존의 Bottom Navigator를 등록하는 방식에서 약간의 차이점이 발생합니다.

기존엔 <NavigationContainer>안에 <Bottom.Navigator>를 등록하는 방식이였다면, <Bottom.Navigator>가 등록되기 전에 <Drawer.Navigator>가 먼저 등록되고 그 다음 <Bottom.Navigator>를 등록하는 방식으로 변경이 되어야 합니다.

 

before : NavigationContainer > Bottom.Navigator > Bottom.Screen

after : NavigationContainer > Drawer.Navigator > Drawer.Screen > Bottom.Navigator > Bottom.Screen

 

// RootNavigation.tsx
import {NavigationContainer} from '@react-navigation/native';
import {createDrawerNavigator} from '@react-navigation/drawer';

const RootNavigation = () => {
  const Drawer = createDrawerNavigator();
  
  return (
    <NavigationContainer>
      <Drawer.Navigator
        backBehavior="history"
        screenOptions={{
          headerShown: false,
          // 우측에서 나오게 하고 싶으면 right
          drawerPosition: 'left',
        }}
        // 사이드바 메뉴 컴포넌트
        drawerContent={props => <Menu {...props} />}>
        <Drawer.Screen name="NOTE" component={StackNavigation} />
      </Drawer.Navigator>
    </NavigationContainer>
  )
};

// StackNavigation.tsx
import {createStackNavigator} from '@react-navigation/stack';

const StackNavigation = () => {
  const Stack = createStackNavigator();

  return (
    <Stack.Navigator>
      <Stack.Screen
        name={AllScreenList.BottomTabs}
        component={BottomNavigation}
        options={{headerShown: false}}
      />
      {/* ...사이드바에 추가될 Screen */}
    </Stack.Navigator>
  );
};

// BottomNavigation.tsx
import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';

const BottomNavigation = () => {
  const Bottom = createBottomTabNavigator();
  
  return (
    <Bottom.Navigator
      backBehavior="history"
      screenOptions={{...}}>
      <Bottom.Screen ... />
    </Bottom.Navigator>
  )
};