코딩하는 김딸기
택시-App.tsx 본문
1. import 부분
import React, {useEffect} from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import {View, StyleSheet, Alert} from 'react-native';
import SearchableList from './components/SelectView'; // SearchableList 컴포넌트 가져오기
import SelectView from './components/SelectView';
import RouteView from './components/RouteView';
import {PathProvider} from './components/PathContext';
import PathDetails from './components/PathDetails'; // PathDetails 컴포넌트
- React, useEffect: React를 사용하고, 컴포넌트가 마운트될 때 특정 작업을 실행할 수 있게 해주는 useEffect를 불러옵니다.
- NavigationContainer: 네비게이션을 관리할 수 있는 기본 컴포넌트입니다. 여러 화면을 연결하는데 필요합니다.
- createStackNavigator: 화면 전환을 스택 방식으로 할 수 있게 도와주는 함수입니다. 이 방식은 하나의 화면을 스택처럼 쌓고, 새로운 화면을 쌓을 때마다 이전 화면으로 돌아갈 수 있게 합니다.
- View, StyleSheet, Alert: React Native에서 기본적으로 제공하는 컴포넌트와 스타일 관련 기능들입니다. 화면을 구성하고 스타일을 적용하는 데 사용됩니다.
- SelectView, RouteView, PathDetails: 각각 다른 화면 컴포넌트입니다. 각 컴포넌트는 앱 내에서 다른 기능을 수행하는 화면을 나타냅니다.
- PathProvider: 컴포넌트들 사이에서 공유할 데이터(경로와 관련된 정보 등)를 관리하는 컨텍스트를 제공합니다.
2. App 컴포넌트
const App = () => {
return (
<PathProvider>
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen
name="RouteView"
component={RouteView}
options={{headerShown: false}}
/>
<Stack.Screen
name="PathDetails"
component={PathDetails}
options={{headerTitle: '상세경로'}}
/>
<Stack.Screen
name="SelectView"
component={SelectView}
options={{headerShown: false}}
/>
</Stack.Navigator>
</NavigationContainer>
</PathProvider>
);
};
- PathProvider: 이 컴포넌트를 앱의 상위 컴포넌트로 감싸면서, 자식 컴포넌트들에서 PathContext를 통해 데이터를 공유할 수 있도록 합니다.
- NavigationContainer: 이 컴포넌트 안에 네비게이션을 포함시키며, 앱 내에서 화면 간 전환을 관리합니다.
- Stack.Navigator: 화면 전환을 스택 방식으로 관리할 수 있게 해주는 컴포넌트입니다. 이 안에 여러 화면을 Stack.Screen으로 정의하여 네비게이션 경로를 설정합니다.
- name: 화면의 이름을 지정합니다.
- component: 해당 화면에서 표시할 컴포넌트를 지정합니다.
- options: 화면의 옵션을 설정합니다.
- headerShown: false: 상단의 헤더를 보이지 않게 합니다.
- headerTitle: 헤더의 제목을 지정합니다.
3. 화면들에 대한 설명
- RouteView: 사용자가 경로를 선택할 수 있는 화면입니다.
- PathDetails: 선택된 경로에 대한 자세한 정보를 보여주는 화면입니다. 이 화면은 headerTitle을 "상세경로"로 설정하여, 제목이 표시됩니다.
- SelectView: 경로 선택과 관련된 화면을 나타냅니다. 이 화면은 헤더를 표시하지 않도록 설정되었습니다.
4. 스타일 설정
// 스타일
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
},
});
- StyleSheet.create: 스타일을 정의하는 React Native의 방법입니다.
- container 스타일:
- flex: 1: 화면 전체를 차지하도록 설정합니다.
- justifyContent: 'center': 화면의 콘텐츠를 세로로 가운데 정렬합니다.
5. export default App
- 앱의 메인 컴포넌트인 App을 다른 파일에서 사용할 수 있도록 export 합니다.
요약
- **PathProvider**로 경로 관련 정보를 앱 전체에서 공유하고, **NavigationContainer**와 **createStackNavigator**를 사용해 화면 간 이동을 관리하는 구조입니다.
- 3개의 화면(RouteView, PathDetails, SelectView)이 정의되어 있고, 각 화면에서 보여주는 UI와 옵션들이 설정되어 있습니다.
- **StyleSheet**를 사용해 화면을 스타일링하여 중앙에 내용을 정렬하고 있습니다.
1. RouteView
- 기능: 경로(예: 교통수단이나 길)를 선택하는 화면
- 사용자가 이 화면에서 다양한 경로를 선택할 수 있습니다. 예를 들어, 목적지까지 가는 여러 가지 경로 중 하나를 고를 수 있게 하는 화면입니다.
- 이 화면은 경로를 보여주거나 선택할 수 있는 목록을 제공하고, 사용자가 원하는 경로를 선택하면 다른 화면으로 전환됩니다.
2. PathDetails
- 기능: 선택된 경로에 대한 상세 정보를 보여주는 화면
- 사용자가 RouteView에서 선택한 경로에 대한 더 자세한 정보를 제공합니다. 예를 들어, 경로의 세부 사항(예: 거리, 소요 시간, 경유지 등)을 보여줄 수 있습니다.
- 이 화면에서는 경로에 대한 구체적인 정보나 옵션들을 표시하여, 사용자가 경로에 대한 세부 정보를 알 수 있도록 도와줍니다.
3. SelectView
- 기능: 경로를 선택하는 화면 (RouteView와 비슷하지만 역할이 다를 수 있음)
- 이 화면은 사용자에게 여러 선택지를 제공하고, 선택을 하게 만들어 다른 화면으로 넘어가는 역할을 합니다. 예를 들어, 출발지와 목적지를 선택하는 화면일 수 있습니다.
- 이 화면은 경로 선택을 위한 첫 단계일 수도 있고, 경로와 관련된 다른 중요한 설정을 할 수 있는 화면일 수 있습니다.
요약:
- RouteView: 경로를 선택하는 화면.
- PathDetails: 선택된 경로의 세부 정보를 제공하는 화면.
- SelectView: 사용자가 선택할 수 있는 다양한 옵션을 제공하는 화면 (경로 선택과 관련된 다른 설정을 다룰 수 있음).
4o mini