본문 바로가기
React

React

by xogns93 2024. 11. 11.

React란?

React는 페이스북(현재 Meta Platforms Inc.)에서 개발하고 2013년에 오픈 소스로 공개한 JavaScript 라이브러리로, 주로 사용자 인터페이스(UI)를 구축하는 데 사용됩니다. React는 웹 애플리케이션 개발을 위한 효율적이고 유연한 도구를 제공하며, 현대적인 애플리케이션 개발에 널리 활용되고 있습니다.


React의 주요 특징

1. 컴포넌트 기반 아키텍처

  • React의 핵심 철학은 UI를 독립적이고 재사용 가능한 컴포넌트로 나누는 것입니다.
  • 컴포넌트:
    • React 앱은 여러 개의 작은 컴포넌트로 구성되며, 각 컴포넌트는 자신의 상태와 UI를 정의합니다.
    • 예: 헤더, 푸터, 네비게이션 메뉴, 버튼 등이 각각 컴포넌트가 될 수 있습니다.
  • 재사용성:
    • 컴포넌트는 다양한 페이지와 기능에서 재사용할 수 있어 개발 효율성을 높입니다.
function Button(props) {
  return <button>{props.label}</button>;
}

export default Button;

2. 가상 DOM (Virtual DOM)

  • DOM의 효율성 문제 해결:
    • 전통적인 방식에서는 DOM을 직접 조작하는 것이 비효율적이며 성능 문제가 발생할 수 있습니다.
  • Virtual DOM 작동 원리:
    • React는 실제 DOM 대신 메모리에 가상 DOM을 생성합니다.
    • 상태(State) 변경 시 가상 DOM과 실제 DOM의 차이를 계산하고, 변경된 부분만 업데이트합니다.
  • 장점:
    • 최소한의 DOM 조작으로 성능 최적화.
    • 빠르고 효율적인 UI 업데이트.

3. 단방향 데이터 흐름 (One-way Data Flow)

  • 부모 → 자식 데이터 흐름:
    • React는 데이터를 props라는 매개변수를 통해 부모에서 자식으로 전달합니다.
    • 자식 컴포넌트는 데이터를 읽기만 할 수 있고, 수정하려면 부모 컴포넌트의 상태를 업데이트해야 합니다.
  • 예측 가능성:
    • 단방향 데이터 흐름은 애플리케이션 상태를 쉽게 추적하고 디버깅 가능하게 만듭니다.
function Greeting(props) {
  return <h1>Hello, {props.name}!</h1>;
}

4. JSX (JavaScript XML)

  • JavaScript와 HTML의 조합:
    • JSX는 HTML과 유사한 문법을 JavaScript에서 사용하여 React 컴포넌트를 정의할 수 있도록 합니다.
    • JSX는 브라우저에서 실행되기 전에 JavaScript 코드로 변환됩니다.
  • 가독성과 생산성:
    • UI를 선언적으로 정의할 수 있어 코드 가독성이 좋아집니다.
function App() {
  return (
    <div>
      <h1>Welcome to React!</h1>
    </div>
  );
}

5. 상태 관리 (State Management)

  • React 컴포넌트는 자신의 상태를 관리하며, 상태(State)는 UI의 동작을 정의하는 핵심 요소입니다.
  • React는 useState, useReducer와 같은 훅(Hook)을 제공하여 상태를 관리합니다.
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increase</button>
    </div>
  );
}
  • 외부 상태 관리 도구:
    • 애플리케이션이 커지면서 상태 관리가 복잡해지면 Redux, MobX, Context API 등을 활용할 수 있습니다.

6. 서버 사이드 렌더링 (SSR)

  • React는 클라이언트 사이드 렌더링(CSR) 외에도 서버 사이드 렌더링(SSR)을 지원합니다.
  • SEO 최적화:
    • SSR을 사용하면 페이지의 HTML이 서버에서 생성되어 초기 로딩 속도가 빨라지고 검색 엔진 최적화(SEO)에 유리합니다.
  • Next.js:
    • React와 함께 SSR을 쉽게 구현할 수 있는 프레임워크입니다.

7. React Native

  • React의 철학과 코드를 활용하여 모바일 애플리케이션 개발이 가능.
  • React Native를 사용하면 Android와 iOS용 앱을 하나의 코드베이스로 개발할 수 있습니다.
  • HTML 대신 네이티브 컴포넌트를 사용하며, React와 동일한 개념을 공유합니다.

React의 장점

  1. 컴포넌트 재사용성:
    • 컴포넌트 기반 구조를 통해 코드 재사용이 용이.
  2. 가상 DOM을 통한 성능 최적화:
    • 최소한의 DOM 업데이트로 효율적인 렌더링.
  3. 생태계의 풍부함:
    • 수많은 라이브러리와 플러그인을 사용하여 기능 확장 가능.
  4. 대규모 커뮤니티 지원:
    • 방대한 문서와 커뮤니티를 통해 다양한 해결책과 리소스를 찾을 수 있음.
  5. 다양한 플랫폼 지원:
    • 웹, 모바일, 데스크톱 앱 개발이 가능.

React의 단점

  1. 러닝 커브:
    • JSX와 컴포넌트 기반 개발 방식에 익숙해지기까지 시간이 걸릴 수 있음.
  2. 상태 관리의 복잡성:
    • 애플리케이션 규모가 커질수록 상태 관리가 복잡해짐.
    • 외부 상태 관리 도구를 사용해야 할 수 있음.
  3. 빠르게 변화하는 생태계:
    • 새로운 버전과 도구가 빠르게 등장하여 지속적인 학습이 필요.

React의 사용 사례

  1. 싱글 페이지 애플리케이션(SPA):
    • React는 SPA 개발에 가장 널리 사용됩니다.
    • 예: Facebook, Instagram.
  2. 대규모 웹 애플리케이션:
    • 동적인 대규모 애플리케이션 개발.
    • 예: Netflix, Airbnb.
  3. 모바일 애플리케이션:
    • React Native를 통해 모바일 앱 개발.
    • 예: Instagram, Uber Eats.

'React' 카테고리의 다른 글

props  (0) 2024.11.11
React Event Handling  (0) 2024.11.11
컴포넌트, JSX  (0) 2024.11.11
Axios  (0) 2024.11.11
Promise  (0) 2024.11.11