참고 https://reactnative.dev/docs/getting-started

소개

 

-  JavaScript 기본 사항에 대한 이해가 필요

핵심 구성 요소 및 기본 구성 요소

React Native 는 React와 앱 플랫폼의 기본 기능을 사용하여 Android 및 iOS 애플리케이션을 빌드하기 위한 오픈 소스 프레임워크임

React Native를 사용하면 JavaScript를 사용하여 플랫폼의 API에 액세스하고 React 구성 요소를 사용하여 UI의 모양과 동작을 구현함

뷰 및 모바일

Android 및 iOS 개발에서  는 UI의 기본 빌딩 블록임

텍스트, 이미지를 표시하거나 사용자 입력에 응답하는 데 사용할 수 있는 화면의 작은 직사각형 요소임

한 줄의 텍스트나 버튼과 같은 앱의 가장 작은 시각적 요소도 일종의 뷰임

기본 구성 요소

Android 개발에서는 Kotlin 또는 Java로 보기를 작성하고, iOS 개발에서는 Swift 또는 Objective-C를 사용함

React Native를 사용하면 React 구성 요소를 사용하여 JavaScript로 이러한 뷰를 호출할 수 있음

런타임 시 React Native는 해당 구성 요소에 해당하는 Android 및 iOS 뷰를 생성함

React Native 구성 요소는 Android 및 iOS와 동일한 뷰에서 지원되기 때문에 React Native 앱은 다른 앱과 같은 모양, 느낌 및 성능을 제공함

이러한 플랫폼 지원 구성 요소를 기본 구성 요소라고 함

 

React Native는 지금 바로 앱 빌드를 시작하는 데 사용할 수 있는 필수 기본 구성 요소 세트와 함께 제공함

이것은 React Native의 핵심 구성 요소 임

 

React Native를 사용하면 앱의 고유한 요구 사항에 맞게 Android  iOS용 기본 구성 요소를 빌드할 수 있

 

커뮤니티 Native Directory  에 기여 구성요소를 보유하고 있음 (3rd party 요소)

 

핵심 구성 요소

API 섹션에 모두 문서화되어 있음. 주로 다음 핵심 구성 요소로 작업함

React Naive UI 요소 안드로이드 뷰 IOS뷰 설정
<View> <ViewGroup> <UIView> 스크롤이 없는<div> 레이아웃을 지원하는 컨테이너
<Text> <TextView> <UITextView> <p> 텍스트 문자열을 표시
<Image> <ImageView> <UIImageView> <img> 이미지를 표시
<ScrollView> <ScrollView> <UIScrollView> <div> 여러 구성 요소와 뷰를 포함할 수 있는 일반 스크롤 컨테이너
<TextInput> <EditText> <UITextField> <input type="text"> 사용자가 텍스트를 입력할 수 있음

핵심 구성 요소를 결합하여 React가 어떻게 작동하는지 보여주는 예시

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

const App = () => {
  return (
    <ScrollView>
      <Text>Some text</Text>
      <View>
        <Text>Some more text</Text>
        <Image
          source={{
            uri: 'https://reactnative.dev/docs/assets/p_cat2.png',
          }}
          style={{ width: 200, height: 200 }}
        />
      </View>
      <TextInput
        style={{
          height: 40,
          borderColor: 'gray',
          borderWidth: 1
        }}
        defaultValue="You can type in me"
      />
    </ScrollView>
  );
}

export default App;

개발 환경 설정

참고 https://reactnative.dev/docs/environment-setup

 

모바일 개발이 처음인 경우 시작하는 가장 쉬운 방법은 Expo CLI를 사용 추천

Expo는 React Native를 기반으로 구축된 도구 세트임

Expo는 많은 기능 이 있으며, 몇 분 안에 React Native 앱을 작성할 수 있다는 것이 장점이며 최신 버전의 Node.js와 전화 또는 에뮬레이터만 있으면 됨

Expo는 웹 브라우저에서 React Native를 직접 사용해 볼 수 있는 Snack 을 제공

 

모바일 개발에 이미 익숙하다면 React Native CLI를 사용하는 것 추천하며, Xcode 또는 Android Studio가 필요함

이러한 도구 중 하나가 이미 설치되어 있는 경우 몇 분 안에 시작하여 실행할 수 있음

 

1. React Native CLI - Android 개발 환경 설정

개발 OS: Windows

Target OS: Android

종속성 설치

Node, React Native CLI, JDK 및 Android Studio가 필요

 

Node / JDK 설치

- Windows용으로 널리 사용되는 패키지 관리자인 Chocolatey 를 통해 Node를 설치하는 것 추천

choco install -y nodejs-lts openjdk11

이미 설치되어 있다면, Node 14이상, JDK 버전 11 이상인지 확인

 

최신 버전의 Java Development Kit를 사용하는 경우 JDK를 인식할 수 있도록 프로젝트의 Gradle 버전을 변경해야 함

{project root folder}\android\gradle\wrapper\gradle-wrapper.properties 이동하여 distributionUrl값을 변경하여 Gradle 버전을 업그레이드하면 됨 ( 여기에서 Gradle의 최신 릴리스를 확인 )

 

node.js 업그레이드 방법 참고 ( https://jsikim1.tistory.com/158 )

윈도우에서 jdk 11 설치 방법 ( https://zetawiki.com/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_OpenJDK_11_%EC%84%A4%EC%B9%98 )

 

Android Studio 설치되어 있지 않다면 설치

 

React Native CLI

React Native에는 명령줄 인터페이스가 내장되어 있음

특정 버전의 CLI를 전역적으로 설치하고 관리하는 대신 Node.js와 함께 제공되는 npx를 사용하여 런타임 시 현재 버전에 액세스하는 것 추천. 그러면 npx react-native <command>명령이 실행될 때 CLI의 현재 안정적인 버전이 다운로드되어 실행됨

 

앱 프로젝트 생성

npx react-native init AwesomeProject

프로젝트 생성

>npx react-native init ReactNativeCoolProject

npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
Need to install the following packages:
  react-native
Ok to proceed? (y) y
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: react-shallow-renderer@16.14.1
npm WARN Found: react@18.0.0

....

npm notice
npm notice New minor version of npm available! 8.11.0 -> 8.13.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.13.2
npm notice Run npm install -g npm@8.13.2 to update!
npm notice

실행

npx react-native run-android

 

 

 

'크로스플랫폼언어 > React Native' 카테고리의 다른 글

React Native  (0) 2022.06.02