리엑트 네이티브 기본 프로젝트 구조 및 문법 설명 React Native

반응형

리엑트 네이티브 기본 프로젝트 구조 및 문법 설명 React Native

리엑트 네이티브 기본 프로젝트 구조 및 문법 설명 React Native

1. 프로젝트 폴더 구조

my-project/
├── App.tsx           # 애플리케이션의 진입점
├── assets/           # 이미지, 폰트 등 정적 리소스 폴더
├── node_modules/     # 설치된 npm 패키지
├── package.json      # 프로젝트 의존성과 스크립트 설정 파일
├── tsconfig.json     # TypeScript 설정 파일
├── app.json          # Expo 프로젝트 설정 파일
└── babel.config.js   # Babel 설정 파일 (코드 변환기)

2. 주요 파일 설명

2.1. App.tsx

  • 앱의 진입점으로, 첫 화면을 구성하는 곳입니다.
  • 여기에서 컴포넌트와 화면을 렌더링하며 필요한 로직을 추가합니다.
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';

export default function App() {
  return (
    <View style={styles.container}>
      <Text>Welcome to React Native!</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#fff',
  },
});

2.2. assets/

  • 이미지, 폰트, 아이콘 등 정적 파일을 저장하는 폴더입니다.
  • 예: assets/logo.png 같은 리소스를 저장하고 앱에서 불러옵니다.

2.3. package.json

  • 프로젝트의 메타데이터, 의존성, 스크립트를 정의하는 파일입니다.
{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "start": "expo start",
    "build": "expo build",
    "eject": "expo eject"
  },
  "dependencies": {
    "react": "18.0.0",
    "react-native": "0.72.0",
    "expo": "~49.0.0"
  }
}

2.4. tsconfig.json

  • TypeScript 설정 파일로, 컴파일러 옵션을 정의합니다.
{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "jsx": "react-native",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true
  }
}

2.5. app.json

  • Expo 설정 파일로, 앱 이름, 아이콘, 배포 설정 등을 정의합니다.
{
  "expo": {
    "name": "My Project",
    "slug": "my-project",
    "version": "1.0.0",
    "platforms": ["ios", "android"],
    "icon": "./assets/icon.png"
  }
}

3. 리액트 네이티브 코드의 기본 구조

3.1. React Native Core Components

React Native는 HTML 대신 자체 UI 컴포넌트를 사용합니다:

  • View: 레이아웃 컨테이너 (HTML의 div와 비슷)
  • Text: 텍스트 표시 (HTML의 p 또는 span)
  • Image: 이미지 표시 (HTML의 img)
  • ScrollView: 스크롤 가능한 뷰
  • Button: 기본 버튼

3.2. 코드 예제

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

export default function App() {
  const onPressButton = () => {
    Alert.alert("Button clicked!");
  };

  return (
    <View style={styles.container}>
      <Text style={styles.title}>Hello, React Native!</Text>
      <Image source={{ uri: 'https://via.placeholder.com/150' }} style={styles.image} />
      <Button title="Click Me" onPress={onPressButton} />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#f5f5f5',
  },
  title: {
    fontSize: 20,
    fontWeight: 'bold',
    marginBottom: 20,
  },
  image: {
    width: 150,
    height: 150,
    marginBottom: 20,
  },
});

4. 스타일링

React Native에서는 CSS 대신 StyleSheet를 사용하여 스타일을 정의합니다.

  • Flexbox를 사용하여 레이아웃을 구성합니다.
  • 색상, 폰트 크기 등은 React Native의 스타일 속성을 따릅니다.
const styles = StyleSheet.create({
  container: {
    flex: 1, // 화면을 꽉 채움
    justifyContent: 'center', // 세로 정렬
    alignItems: 'center', // 가로 정렬
    backgroundColor: '#fff', // 배경색
  },
  text: {
    fontSize: 16, // 글자 크기
    color: '#333', // 글자 색
  },
});

5. 컴포넌트 구조화

작업이 커지면 코드를 컴포넌트로 분리하여 관리합니다

my-project/
├── components/
│   ├── Header.tsx    # 헤더 컴포넌트
│   └── Footer.tsx    # 푸터 컴포넌트
├── screens/
│   ├── HomeScreen.tsx # 홈 화면
│   └── AboutScreen.tsx # 소개 화면

6. Expo 기본 명령어

  • 앱 실행
npm start
  • 빌드 준비(Android/iOS):
expo build:android
expo build:ios
 
반응형