요구사항
- 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>
);
}