모바일 애플리케이션 내의 내비게이션 시스템은 여러 화면과 기능에서 사용자의 이동을 용이하게 하고 혼란이나 좌절 없이 직관적인 경험을 보장하는 데 필수적입니다.

React Native 애플리케이션 개발을 위해 특별히 설계된 적응력이 뛰어나고 강력한 내비게이션 솔루션인 React Navigation을 활용하면 뛰어난 모바일 내비게이션 시스템을 쉽게 제작할 수 있습니다. 이 기능을 활용하면 모바일 애플리케이션을 위한 직관적이고 간소화된 사용자 인터페이스를 효율적으로 제작할 수 있습니다.

React 내비게이션 라이브러리 설치하기

React 내비게이션 라이브러리는 사용자에게 스택, 탭, 드로어라는 세 가지 기본 내비게이션 모델을 제공하며, 이는 애플리케이션 내에서 다양한 화면 구성 요소 간의 내비게이션 흐름을 정렬하고 조정하는 아키텍처 기반 역할을 합니다.

React 내비게이션을 사용하려면 먼저 필요한 모든 컴포넌트와 함께 설치되어 있는지 확인해야 합니다.

 npm install @react-navigation/native
npm install react-native-screens react-native-safe-area-context

내비게이터 설정하기

React 내비게이션 프레임워크 내의 모든 개별 내비게이터는 각각의 라이브러리 내에 캡슐화되어 있습니다. 이러한 내비게이터를 사용하려면 해당 내비게이터를 독립적으로 설치해야 합니다.

모바일 애플리케이션을 위한 내비게이션 플랫폼을 만들 때 프로젝트 아키텍처를 최적으로 구성하는 것은 필수적입니다.

애플리케이션의 App.js 파일 내에 사전 정의된 탐색 체계를 통합하는 프로세스에는 관련 코딩 명령 및 지침을 구현해야 합니다.

App.js 파일 내에 내비게이터를 포함시키는 것은 다양한 이점을 제공하기 때문에 최적의 접근 방식으로 간주됩니다.

App.js는 리액트 네이티브 애플리케이션 내에서 주요 요소 역할을 하며, 내비게이션을 포함하면 내비게이션 배열이 컴포넌트 계층 구조의 최상위 계층에 배치되고 트리 전체에서 쉽게 사용할 수 있습니다.

내비게이터의 컨테이너로 App.js를 활용하면 내비게이터에 포함된 모든 화면에서 글로벌 상태 및 소품의 원활한 통신이 가능하므로 관리 및 기능의 용이성이 향상됩니다.

React Navigation의 NavigationContainer를 활용하면 내비게이션에 필요한 환경이 제공되며, 일반적으로 App.js 내에 배치됩니다. 동일한 문서에 내비게이터를 배치함으로써 내비게이터를 NavigationContainer와 쉽게 통합할 수 있습니다.

스택 내비게이터

React 내비게이션 라이브러리에서 스택 내비게이터는 가장 선호되는 내비게이션 패턴으로 떠올랐습니다. 이 내비게이터는 모든 화면이 독립적인 컴포넌트 역할을 하며 이전 화면 위에 위치하는 스택 데이터 구조를 사용합니다.

스택 내비게이터는 새로 추가된 화면이 현재 또는 “활성” 화면이 되고 이전에 활성화된 화면은 그 아래 하위 위치로 강등되어 화면 간 원활한 탐색을 가능하게 합니다. 이러한 방식으로 사용자는 웹페이지의 탐색 메뉴를 탐색하는 것과 유사하게 스택을 앞뒤로 이동할 수 있습니다. 스택 내비게이터는 한 화면에서 다른 화면으로 원활하게 전환되도록 프로그래밍할 수 있습니다

이 글도 확인해 보세요:  Rust의 제네릭 형식 알아보기

이 문장에 대해 좀 더 자세히 설명해 주시겠습니까?

 import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

// Import your screen components
import HomeScreen from './screens/HomeScreen';
import DetailsScreen from './screens/DetailsScreen';

const Stack = createStackNavigator();

const App = () => {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Details" component={DetailsScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
};

export default App;

생성된 코드 블록은 내비게이션 라이브러리의 `createStackNavigator()` 함수를 사용하여 스택 내비게이터 구성 요소를 설정합니다.

홈 화면과 세부 정보 화면

주어진 문장을 좀 더 정교하게 렌더링할 수 있도록 해 주세요. “이제 ‘스택 내비게이터’ 설치를 진행해야 합니다.

 npm install @react-navigation/stack

홈 화면의 범위 내에서 내비게이션 요소를 사용하여 스택 내비게이터의 성능을 평가할 수 있습니다.

 import { StyleSheet, View, Button } from "react-native";
import React from "react";

const HomeScreen = ({ navigation }) => {
  return (
    <View>
      <Button
        title="Navigate to .."
        onPress={() => navigation.navigate("DetailScreen")}
      />
    </View>
  );
};

export default HomeScreen;

const styles = StyleSheet.create({});

닫기

스택 내비게이터는 기본적으로 이전에 본 화면으로 뒤로 이동하기 위한 탐색 화살표 버튼을 생성한다는 사실에 유의하세요.

탭 내비게이터

스택 내비게이터와 같은 앞뒤로 이동하는 내비게이션 시스템을 사용하면 때때로 불만족스러운 사용자 경험이 발생할 수 있습니다. 이러한 경우 탭 내비게이터는 웹 브라우징 바의 기능을 모방하여 사용자에게 모든 탐색 옵션을 한 번에 표시할 수 있기 때문에 더 유리한 것으로 입증되었습니다.

이를 시작하기 위해서는 NPM 패키지 관리자를 활용하여 “@react-navigation/bottom-tabs” 라이브러리를 구현해야 합니다.

주어진 문장에 대해 좀 더 정제된 해석을 제공해 드리겠습니다. “createBottomNavigator() 함수를 활용하면 스택 내비게이터 생성에 사용된 프로세스와 유사하게 탭 내비게이터의 표현을 생성할 수 있습니다.

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

const Tab = createBottomTabNavigator();

내비게이터 및 내비게이션을 위한 컨테이너 내에서 탭 섹션의 형태로 내비게이션 요소의 원하는 구성을 설명합니다.

 export default function App() {
  return (
    <NavigationContainer>
      <Tab.Navigator>
          <Tab.Screen
            name="Home"
            component={HomeScreen}
            options={{ title: "Home" }}
          />
          <Tab.Screen
            name="Profile"
            component={ProfileScreen}
            options={{ title: "Profile" }}
          />
          <Tab.Screen
            name="Details"
            component={DetailScreen}
            options={{ title: "Details" }}
          />
      </Tab.Navigator>
    </NavigationContainer>
  );
}

애플리케이션을 실행하면 인터페이스 하단에 지정된 화면 구성을 표시하는 탭 내비게이터가 나타납니다.

닫기

탭 탐색기의 위치는 tabBarPosition 속성을 사용하여 조정할 수 있습니다. 사용 가능한 옵션에는 상단, 오른쪽, 왼쪽 또는 하단(기본 설정)에 배치하는 것이 포함됩니다.

이 글도 확인해 보세요:  Reqwest로 Rust에서 HTTP 요청 만들기

서랍 탐색기

서랍 탐색기는 모바일 애플리케이션에서 자주 사용되는 일반적인 기능으로, 지정된 아이콘을 당기거나 클릭하여 액세스하면 디스플레이 가장자리에서 서랍이 확장되어 서랍 안의 내용물을 표시하는 방식으로 사용할 수 있습니다.

닫기

서랍 탐색은 반응 네이티브 제스처 핸들러 및 반응 네이티브 리애니메이티드와 함께 설치하여 활용할 수 있습니다.

 npm install @react-navigation/drawer
npm install react-native-gesture-handler react-native-reanimated

Reanimated의 기능을 활용하려면 babel.config.js 파일의 Babel 구성 설정에 이 기능을 통합해야 합니다.

 module.exports = {
    presets: ["babel-preset-expo"],
    plugins: ["react-native-reanimated/plugin"],
};

서랍 탐색기를 설정하는 방법에 대한 예를 들어 보겠습니다:

 import "react-native-gesture-handler"; // This import must be at the top

import { View, Text, Button } from "react-native";
import { createDrawerNavigator } from "@react-navigation/drawer";
import { NavigationContainer } from "@react-navigation/native";

const Drawer = createDrawerNavigator();

const DrawerContent = ({ navigation }) => {
  return (
    <View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
      <Text style={{ fontSize: 24, fontWeight: "bold" }}>
        Welcome to the Drawer
      </Text>
      <Text>
        This is some extra content that you can display in the drawer.
      </Text>
      <Button title="Close Drawer" onPress={() => navigation.closeDrawer()} />
    </View>
  );
};

const App = () => (
  <NavigationContainer>
    <Drawer.Navigator
      initialRouteName="Home"
      drawerContent={(props) => <DrawerContent {...props} />}
    >
      {/* Your other screens here */}
    </Drawer.Navigator>
  </NavigationContainer>
);

export default App;

DrawerContent 컴포넌트는 소품으로 제공되어 서랍 탐색기를 만드는 창작 과정 내에서 요소 컴포넌트로 제공되고 있습니다. DrawerContent 엔티티 내에서 텍스트 구성 요소 또는 대체 빌딩 블록을 수반되는 시각적 형식과 함께 사용하여 원하는 정보 표현을 생성할 수 있습니다.

정적이고 영구적으로 표시되는 탭 탐색기는 디스플레이의 일부를 가리고 주의를 기본 화면에서 다른 곳으로 돌리기 때문에 항상 최적이 아닐 수 있습니다. 이러한 경우 서랍을 동적 탭 탐색기로 활용하고 그 안에 탐색 메뉴를 통합하는 것이 유용할 수 있습니다. 사용자는 서랍에 액세스하여 탐색 메뉴를 찾을 수 있습니다.

서랍 구성 요소를 사용하여 검색창, 사용자 프로필, 상황에 맞는 데이터 또는 확장 보기가 필요하지 않은 기타 요소와 같은 보조 자료를 표시할 수 있습니다.

서랍 탐색기를 사용할 때 최적의 결과를 얻으려면 이 가이드라인을 준수하는 것이 좋습니다.

과도한 선택 항목으로 서랍에 부담을 주지 말고, 가장 중요하고 자주 사용하는 특성을 보여주는 데 집중하는 것이 좋습니다.

관련 사물을 체계적이고 본능적인 방식으로 정리하면 사용자가 필요한 정보를 효율적으로 찾을 수 있습니다.

이 글도 확인해 보세요:  자바스크립트에서 Intl API를 사용하는 방법

그림이나 그래픽 단서를 활용하여 사용자가 서랍 내 각 구성 요소의 기능을 이해하는 데 도움을 줍니다.

내비게이션 프롭으로 데이터 전달

React Navigation 라이브러리는 개발자가 내비게이션 프롭을 통해 정보를 전송하는 고급 기술을 제공하여 애플리케이션 내의 컴포넌트 간에 데이터를 원활하게 전달할 수 있게 해줍니다.

일련의 객체가 하나의 디스플레이 장치에 표시되고 사용자가 선택하면 관련 정보를 별도의 디스플레이 화면으로 전송하고자 하는 상황을 상상해 보십시오.

앱에서 화면 사이를 성공적으로 탐색하려면 먼저 명확하고 체계적인 탐색 구조를 설정하는 것이 중요합니다. 이는 특정 항목 선택 시 세부 화면으로의 전환을 처리하는 함수를 홈 화면의 컴포넌트 내에 정의함으로써 달성할 수 있습니다. 해당 함수에는 이 전환 과정에서 전달해야 하는 관련 정보나 데이터가 포함되어야 합니다.

 import React from 'react';
import { View, Text, Button } from 'react-native';

const HomeScreen = ({ navigation }) => {
  const handleItemPress = (item) => {
    navigation.navigate('DetailScreen', { item });
  };

  return (
    <View>
      <Text>List of Items</Text>
      <Button title="Item 1" onPress={() => handleItemPress('Item 1 Data')} />
      <Button title="Item 2" onPress={() => handleItemPress('Item 2 Data')} />
    </View>
  );
};

export default HomeScreen;

`handleItemPress` 함수는 `navigation.navigate` 메서드를 사용하여 `DetailScreen`으로 전환하는 동시에 선택한 항목 정보를 후자의 인수로 전송합니다.

디테일스크린 컴포넌트에 전달된 정보를 검색하기 위해서는 내비게이션 프로퍼티를 활용해야 합니다.

 import React from 'react';
import { View, Text } from 'react-native';

const DetailScreen = ({ navigation }) => {
  const item = navigation.getParam('item', '');

  return (
    <View>
      <Text>Detail Screen</Text>
      <Text>{item}</Text>
    </View>
  );
};

export default DetailScreen;

DetailScreen 컴포넌트는 내비게이션 프로퍼티 내의 getParam 함수를 활용하여 전달된 파라미터를 가져옵니다. 이 경우 데이터가 존재하지 않을 수 있다는 가정 하에 빈 문자열의 기본값이 설정됩니다. 따라서 정보를 사용할 수 없는 경우 렌더링 중에 애플리케이션이 충돌하지 않습니다.

애플리케이션의 복잡성을 고려할 때, 상태 관리 라이브러리인 Redux 또는 컨텍스트 API를 사용하여 정보를 보편적으로 규제하고 배포할 수 있습니다.

내비게이션 코드 구성하기

내비게이션 코드를 효과적으로 구성하는 것은 확장 가능하고 협력적인 React Native 애플리케이션을 구축하는 데 매우 중요합니다. 이는 내비게이션 로직을 포괄적인 조각으로 세분화하여 면밀히 조사하고 해석하기가 더 쉬워짐으로써 달성할 수 있습니다.

컴포넌트를 활용하면 완벽한 내비게이션을 통해 원활하고 손쉬운 사용자 경험을 제공할 수 있습니다. 또한

의 효율성을 방해하지 않습니다.

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.