본문 바로가기
카테고리 없음

react native navigation

by 용용이아바이 2024. 3. 29.
728x90

요구사항

  • react-native>= 0.72.0
  • expo>= 49(Expo를 사용하는 경우)
  • typescript>= 5.0.0(TypeScript를 사용하는 경우)

필수 패키지

npm install @react-navigation/native@next

React Navigation은 몇 가지 핵심 유틸리티로 구성되며, 이러한 유틸리티는 네비게이터가 앱에서 탐색 구조를 만드는 데 사용된다.

설치 작업을 프런트로드하기 위해 대부분의 탐색기에서 사용하는 종속성을 설치하고 구성한 다음 일부 코드 작성을 시작할 수 있다. 

react-native-screens 와 react-native-safe-area-context 라이브러리가 이미 설치되어 있고 최신 버전인 경우 여기에서 완료된다. 아니라면 설치해야 한다.

Expo 관리

npx expo install react-native-screens react-native-safe-area-context

 expo를 사용하지 않는다면

npm install react-native-screens react-native-safe-area-context

React Native 0.60 이상에서는 연결이 자동으로 이루어진다 . 따라서 실행할 필요가 없다 react-native link .

Mac을 사용하고 iOS용으로 개발하는 경우 연결을 완료하려면 Cocoapods를 통해 Pod를 설치해야 한다.

 

CocoaPods.org

CocoaPods is built with Ruby and is installable with the default Ruby available on macOS. We recommend you use the default ruby. Using the default Ruby install can require you to use sudo when installing gems. Further installation instructions are in the g

cocoapods.org

npx pod-install ios

react-native-screens패키지가 Android 장치에서 제대로 작동하려면 하나의 추가 구성 단계가 필요하다. 아래에 있는 편집 MainActivity.kt또는 파일이다 .MainActivity.javaandroid/app/src/main/java/<your package name>/

강조 표시된 코드를 클래스 본문에 추가한다 MainActivity.

코틀린:

class MainActivity: ReactActivity() {
  // ...
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(null)
  }
  // ...
}

자바:

public class MainActivity extends ReactActivity {
  // ...
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(null);
  }
  // ...
}

이 파일 상단의 패키지 설명 아래에 다음 import 문을 추가해야 한다.

import android.os.Bundle;

React Navigation

React Navigation을 사용할 때 앱에서 네비게이터를 구성한다. 네비게이터는 앱의 화면 간 전환을 처리하고 헤더, 탭 표시줄 등의 UI를 제공한다.

네비게이터를 구성하는 두 가지 기본 방법이 있다.

정적 구성

정적 구성 API는 상용구를 줄이고 TypeScript 유형 및 딥 링크와 같은 항목을 단순화한다. 새 프로젝트를 시작하거나 React Navigation을 처음 사용하는 경우 앱을 설정하는 데 권장되는 방법 이다. 나중에 더 많은 유연성이 필요할 경우 언제든지 동적 구성과 혼합하여 사용할 수 있다.

// In App.js in a new project

import * as React from 'react';
import { View, Text } from 'react-native';
import { createStaticNavigation } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

function HomeScreen() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Home Screen</Text>
    </View>
  );
}

const RootStack = createNativeStackNavigator({
  screens: {
    Home: HomeScreen,
  },
});

const Navigation = createStaticNavigation(RootStack);

export default function App() {
  return <Navigation />;
}

동적 구성

동적 구성은 더 많은 유연성을 제공하지만 더 많은 상용구와 구성(예: 딥 링크, TypeScript 등)이 필요하다.

동적 구성을 시작하려면 먼저 앱을 NavigationContainer. 일반적으로 index.js다음 과 같은 항목 파일에서 이 작업을 수행한다 

App.js.

import * as React from 'react';
import { NavigationContainer } from '@react-navigation/native';

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

또는

// In App.js in a new project

import * as React from 'react';
import { View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

function HomeScreen() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Home Screen</Text>
    </View>
  );
}

const Stack = createNativeStackNavigator();

function RootStack() {
  return (
    <Stack.Navigator>
      <Stack.Screen name="Home" component={HomeScreen} />
    </Stack.Navigator>
  );
}

export default function App() {
  return (
    <NavigationContainer>
      <RootStack />
    </NavigationContainer>
  );
}

 

728x90