React Native와 React 기본
by Frinee이번에는 모바일 앱 개발을 위한 React Native와
개발을 위해 필요한 React의 기본에 대해서 간단히 포스팅하겠습니다..! ✈
React Native?
- React Native는 React와 앱 플랫폼의 기본 기능을 사용하여 Android 및 iOS 애플리케이션을 빌드하기 위한 오픈 소스 프레임워크
- Javascript를 사용하여 플랫폼의 API를 액세스 하고 React의 Component를 사용하여 UI의 모양과 동작을 설명함.
뷰(View)와 모바일
- 뷰(View)는 UI의 기본 구성 요소이며 text, image, 사용자 input 등을 담는 직사각형 element를 말함.
- 뷰(View)는 뷰(View) 안에 또 다른 뷰(View)를 포함할 수 있음
주요 컴포넌트들
React Native에는 컨트롤부터 활동 표시기까지 다양한 컴포넌트들이 존재한다.
React Native UI 컴포넌트 |
Android View |
iOS View | Web Analog | 설명 |
<View> |
<ViewGroup> |
<UIView> |
<div> |
flexbox, 스타일, 일부 터치 처리, 접근성 제어 등을 제공합니다. |
<Text> |
<TextView> |
<UITextView> |
<p> |
문자열을 표시하고 스타일을 지정하며, 텍스트 내에서 터치 이벤트도 처리합니다. |
<Image> |
<ImageView> |
<UIImageView> |
<img> |
다양한 유형의 이미지를 표시합니다. |
<ScrollView> |
<ScrollView> |
<UIScrollView> |
<div> |
여러 컴포넌트와 뷰를 포함할 수 있는 일반적인 스크롤 컨테이너 |
<TextInput> |
<EditText> |
<UITextField> |
<input |
사용자가 텍스트를 입력할 수 있도록 합니다. |
React 기본 개념
- React Native는 Javacript로 React 위에서 실행된다.
- 필요한 React의 핵심 개념은...
- 컴포넌트(Components)
- JSX
- Props
- State
컴포넌트 (Components)
※ 모든 예제를 'Cat'을 사용해서 설명할 예정입니다.
Cat
컴포넌트 정의
import React from 'react';
import {Text} from 'react-native';
// 컴포넌트는 함수로 정의
const Cat = () => {
return <Text>Hello, I am your cat!</Text>;
};
// 앱 전역에서 사용하도록 export default
export default Cat;
JSX
- React에서 사용하는 JavaScript 확장 문법으로, HTML과 유사한 구문을 사용해 UI를 정의
- JSX는 JavaScript 코드 안에 XML/HTML과 유사한 문법을 작성할 수 있도록 도와줌.
- 예시 코드
import React from 'react';
const name = "Munkustrap";
const Cat = () => {
return <Text>Hello, I am {name}!</Text>;
};
const fullName = getFullName("Rum", "Tum", "Tugger");
return <Text>{fullName}</Text>;
Props
- React에서 속성(properties)을 의미하는 용어로 컴포넌트에 전달되는 데이터나 설정값을 말함.
- Props는 부모 컴포넌트에서 자식 컴포넌트로 전달되며, 자식 컴포넌트는 이 데이터를 활용하여 UI를 렌더링 하거나 특정 동작을 수행
- 특징
- 읽기 전용: Props는 자식 컴포넌트에서 읽기만 할 수 있고, 변경할 수 없음
- 부모에서 자식으로 전달
- 컴포넌트의 커스터마이징: Props를 사용하면 컴포넌트의 동작이나 외형을 동적으로 설정할 수 있음
- 예시 코드
const Cat = (props) => {
return <Text>Hello, I am {props.name}!</Text>;
};
const App = () => {
return (
<View>
<Cat name="Munkustrap" />
<Cat name="Spot" />
</View>
);
};
- React Native의 대부분 핵심 컴포넌트도 props로 커스터마이징이 가능하며 Image 컴포넌트도 가능하다.
<Image source={{uri: '[https://example.com/cat.jpg'](https://example.com/cat.jpg')}} />
State
- React와 React Native에서 컴포넌트의 상태를 관리하는 방법을 말함.
- 컴포넌트의 데이터나 상태를 저장하는 곳으로 사용자의 상호작용이나 시간에 따라 변할 수 있는 데이터를 다루는 데 사용
- 특징
- 동적인 데이터 저장:
state
는 시간이 지나면서 변경될 수 있는 데이터를 저장 ex) 버튼 클릭값, 입력 필드값 등 - 컴포넌트 내에서 관리:
state
는 해당 컴포넌트 내에서만 관리되며, 변경되면 그 컴포넌트는 다시 렌더링됨 - 변경 시 UI 업데이트:
state
값이 변경되면 React는 UI를 자동으로 업데이트하여 반영
- 동적인 데이터 저장:
- 컴포넌트에
state
를 추가하기 위해서 React의useState
훅을 사용함. - 예시 코드
import React, {useState} from 'react';
const Cat = () => {
const [isHungry, setIsHungry] = useState(true);
return (
<View>
<Text>{isHungry ? 'I am hungry!' : 'I am full!'}</Text>
<Button
title="Feed me"
onPress={() => setIsHungry(false)}
/>
</View>
);
};
useState
는 두 가지를 반환함.state
:isHungry
와 같은 상태 변수를 정의setState
:setIsHungry
와 같은 상태 변수의 값을 업데이트하는 함수
컴포넌트 여러 번 사용하기
- 컴포넌트는 다음과 같이 여러 번 사용할 수 있어 코드의 복잡성을 줄이고 효율을 높일 수 있다.
const Cafe = () => {
return (
<>
<Cat name="Munkustrap" />
<Cat name="Spot" />
</>
);
};
자료
블로그의 정보
프리니의 코드저장소
Frinee