react native,

React Native Basics

Dahna Dahna Follow Aug 02, 2024 · 2 mins read
React Native Basics
Share this

React Native Basics

npm install : 프로젝트에 필요한 의존성 설치


index.tsx패턴과 App.js패턴 차이

  1. 진입점(Entry Point) 및 라우팅 방식:
    App.js 패턴:
    기존의 리액트 네이티브 앱에서는 App.js가 기본 진입점(entry point)으로 사용되었습니다. 이 파일에서 앱의 모든 주요 컴포넌트를 로드하고 네비게이션을 설정합니다.
    개발자는 React Navigation과 같은 라이브러리를 사용해 별도의 네비게이터(navigator)를 설정하고 라우트를 관리했습니다.
    index.tsx 패턴:
    Expo Router를 사용하는 경우, index.tsx는 특정 디렉토리 내에서 라우팅과 레이아웃을 자동으로 관리하는 데 사용됩니다.
    디렉토리 구조가 라우팅을 자동으로 관리해 주므로, 개발자는 라우팅을 수동으로 설정할 필요가 없습니다. 예를 들어, pages/Home.tsx 파일이 있으면 /home 라우트로 자동 매핑됩니다.
    index.tsx 파일은 해당 디렉토리 내의 모든 페이지에 공통적으로 적용되는 레이아웃을 정의합니다.

  2. 레이아웃 관리:
    App.js 패턴:
    App.js에서 전체 앱의 루트 컴포넌트를 정의하고, 모든 페이지와 네비게이션을 직접 관리해야 합니다. 글로벌 레이아웃(헤더, 푸터 등)을 수동으로 설정하고 유지해야 합니다.
    index.tsx 패턴:
    index.tsx 파일은 해당 디렉토리 내의 모든 페이지에 일관된 레이아웃을 제공하는 역할을 합니다.
    예를 들어, index.tsx에서 공통적으로 사용할 헤더나 네비게이션 바를 정의하면, 해당 디렉토리 내의 모든 페이지에 자동으로 적용됩니다.

핵심 컴포넌트 & 컴포넌트 스타일링

  • Text와 View는 React Native의 가장 중요한 내장 컴포넌트
  • div나 h2 태그는 DOM을 통해 사용할 수 있는 HTML요소라서 사용할 수 없음
  • 브라우저가 아니기 때문에 CSS가 없음 -> 대신 스타일을 적용함
  • 인라인 스타일을 적용하거나 StyleSheet객체를 사용함
  • View안에는 div처럼 그냥 텍스트를 넣을 수 없음 -> Text로 감싸줘야 함
  • React Native에서는 View가 컴포넌트를 담는 유일한 컨테이너 컴포넌트임
  • 사용할 HTML요소를 import 해줘야 함


앱 스타일링하기

  • 인라인 스타일을 추가해서 스타일 객체를 프로퍼티로 전달하거나
  • 별도의 객체를 정의해서 프로퍼티로 전달
  • style : 모든 요소에 지원되는 것이 아니라 View, Text 같은 일부에서만 지원됨
  • 보통은 StyleSheet 객체를 사용함


Layouts & Flexbox

  • Flexbox : React Native에서 페이지 콘텐츠를 조직 및 구성할 때 핵심 도구
  • 주축은 flexDirection을 따름
  • flexDirection이 row라면 주축은 왼쪽에서 오른쪽, column이면 위에서 아래
  • justifyContent를 사용해 주축을 따라 정렬
  • alignItems를 사용해 교차축을 따라 요소를 정렬
  • 구체적인 설정은 자식요소에서


이벤트 처리

  • 이벤트 리스너를 추가해서 이벤트 함수에 연결하고 useState 훅을 사용해 컴포넌트에서 상태를 관리
  • onChangeText프로퍼티 : React Native에서 활용하는 프로퍼티로 함수를 값으로 취하고 함수를 지목하는 역할. 괄호는 추가하면 안됨
  • React Native에서는 버튼에 해당 프로퍼티가 없음. 대신 비슷한 onPress


강의 목표 리스트 관리하기

  function addGoalHandler() {  
    setCourseGoals((currentCourseGoals: string[]) => [  
      ...currentCourseGoals,  
      enteredGoalText,  
    ]);  
  }  

... : 전개 연산자(spread operator)
배열이나 객체의 요소들을 개별적으로 펼쳐서 사용할 수 있게 해주는 기능
<View style={styles.goalsContainer}> {courseGoals.map((goal) => <Text key={goal}>{goal}</Text>)} </View> : 목록의 일부로 출력되는 개별 항목에는 항상 key프로퍼티를 추가해야 함

1

Dahna
Written by Dahna Follow
Hi, I am Dahna, the author of this blog!