
React란? 2014년 페이스북에서 사용자 인터페이스(User Interface)를 만들기 위해 개발된 Javascript 기반의 라이브러리 프로그램이다. (React Native : 모바일 앱 개발)
(1) React를 가장 많이 사용하는 궁극적인 이유?
-> React는 UI를 자동으로 업데이트해준다는 점
-> Javascript의 문법을 그대로 활용하고 있다는 점
-> 페이스북의 지속적인 관리와 함께 커뮤니티가 활성화 되어 있다는 점
-> 리액트를 활용하면서 마주할 문제(에러)들에 대한 해결방안을 쉽게 찾아볼 수 있다는 점
-> 리액트 기반의 React Native라는 기술을 통해 iOS, 안드로이드 기반의 모바일 애플리케이션도 개발할 수 있다는 점
React와 React Native의 차이점
-> React : Web Application
-> React Native : Mobile Application (iOS, Android)
(1) 선언적 프로그래밍 기반
예) 택시 - 선언적 & 절차적 차이
- 선언적 : ㅇㅇㅇ역에서 내려주세요. (ㅇㅇㅇ역까지 가주세요)
- 절차적 : 이 방향으로 직진해서 두 번째 블록에서 우회전해주시고, 이후 첫 번째 신호등에서 좌회전해주세요. 전방에 다리를 건널 때까지 직진해주시고, 소방서가 있는 블록에서 우회전 후 300m 앞에서 내려주세요. (우회전 -> 좌회전 -> 직진 -> 우회전 -> 목적지 도착)
(2) Virtual DOM
(3) 컴포넌트(Component)
(3-1) 컴포넌트의 종류 - 클래스 컴포넌트 & 함수 컴포넌트
import React from 'react';
class App extends React.Component {
render() {
return <h1>This is Class Component!</h1>;
}
}
export default App;
-> 클래스 컴포넌트를 사용할땐 반드시 render() 메서드가 있어야 하고, 그 안에서 화면에 보여줄 JSX(Javascript Syntax eXtension)를 반환해야 한다. state 및 lifecycle(라이프사이클) API를 통해 관련 기능을 사용할 수 있다.
import React from 'react'
const App = () => {
return <h1>This is Function Component!</h1>;
};
export default App;
-> 함수 컴포넌트는 render 메서드 없이 JSX를 반환하는 방식으로, 클래스 컴포넌트에 비해서 훨씬 간단하고 단순하다. React 16.8 버전에서 Hook 기능이 추가되면서 클래스 컴포넌트에서만 구현할수 있었던 Hook을, 함수 컴포넌트에서 구현할수 있게 되면서, 그 후부터 클래스 컴포넌트보다는 함수 컴포넌트가 더 많이 사용되기 시작했다. (오히려 클래스 컴포넌트보단 함수 컴포넌트가 구현할수 있는 state이외 많은 기능들을 사용할수 있어서 편리하다는 큰 장점이 있음.)
(4) JSX(Javasript Syntax eXtension)