2편. React Navigation 설치

byron1st·2021년 10월 10일
2

앱의 척추는 내비게이션이다. API 서버를 구축할 때, 미들웨어 배치와 라우터(컨트롤러)에서 모델(데이터베이스)로 이어지는 구조가 가장 기본이자 코어에 해당하는 구조이듯, 앱에서는 내비게이션 구조가 가장 기본이자 코어에 해당하는 구조라고 할 수 있다.

React Native 는 바로 그 핵심인 내비게이션을 외부 라이브러리에 의존한다. 아주 불만족스러운 부분인데, React Native 자체가 철저히 커뮤니티로부터 개발되는 것을 추구하다보니 어쩔 수 없는 부분일 것이다.

React Native 내비게이션의 "사실상 표준" 라이브러리는 React Navigation 이다. 솔직히 그냥 React Native 프로젝트 생성 시 같이 깔려버려도 좋을 것 같은 정도다. 일단 설치부터 해보자.

1. React Navigation 설치

설치는 우선 1) npm 라이브러리 설치, 2) 의존관계 라이브러리 추가 설치(자동으로 설치되지 않는다), 3) iOS 및 안드로이드 설정으로 진행된다.

npm 라이브러리 설치

라이브러리 설치는 간단하다. 아래 명령어로 설치하도록 하자.

yarn add @react-navigation/native

의존관계 라이브러리 추가 설치

React Navigation은 react-native-screensreact-native-safe-area-context에 의존한다. 그래서 이 두 라이브러리를 추가로 설치해주어야 한다. (왜 같이 깔리지 않는지 의문이다)

yarn add react-native-screens react-native-safe-area-context

여기서 react-native-screens 는 React Native 의 화면 전환을 위한 라이브러리로, 애초에 단독으로 쓰이도록 계획된 라이브러리가 아니다. react-native-safe-area-context 는 React Native 의 SafeAreaView 를 보완하기 위한 라이브러리로, SafeAreaView 의 높이 등과 같은 추가적인 값에 접근할 수 있도록 해준다. React Navigation 을 쓸 경우(무조건 쓸 수 밖에 없지만), React Native 의 SafeAreaView 대신 react-native-safe-area-contextSafeAreaView 를 쓰는 것이 더 좋다.

iOS 및 안드로이드 설정

iOS 는 으레 하던대로 npx pod-install 을 해주면 된다. 이 명령어는 cd ios && pod install && cd .. 와 동일한 작업을 하는 명령어다.

안드로이드의 경우, 보통 자동으로 링크가 되지만, React Navigation 의 경우 아래 코드를 MainActivity.java 파일에 삽입해주어야 한다.

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(null);
}

아래 import 도 MainActivity.java 파일 상단에 추가해준다.

import android.os.Bundle;

2. React Navigation 사용

React Navigation 을 사용하기 위해서는 루트 파일(./src/App.tsx 과 같은)에서 앱의 모든 React 컴포넌트들을 NavigationContainer 로 래핑 해주어야 한다. NavigationContainer 는 내비게이션을 위해 필요한 값들을 자식 컴포넌트들에 공급하는 역할을 한다. 모르긴 몰라도 아마 React Context 를 이용해서 개발되었겠거니 싶다.

...
import { NavigationContainer } from '@react-navigation/native';

export default function App() {
  ...
  return (
    <NavigationContainer>{/* Rest of your app code */}</NavigationContainer>
  );
}

이후 원하는 형식의 내비게이션에 따라 @react-navigation/stack, @react-navigation/bottom-tabs, @react-navigation/drawer 등을 추가로 설치해서 사용하면 된다.

공식 문서가 상당히 훌륭한 편이니 자세한 사용법에 관해서 참고하길 바란다.

이제 임베디드 데이터베이스를 설치해보자.

profile
Fullstack software engineer specialized for Blockchain

0개의 댓글

관련 채용 정보