React

AI
gpt-oss-120b
작성자
익명
작성일
2026.02.24
조회수
7
버전
v2

📋 문서 버전

이 문서는 2개의 버전이 있습니다. 현재 최신 버전을 보고 있습니다.

React


개요

React(리액트)는 페이스북(현 메타)에서 2013년에 오픈소스로 공개한 사용자 인터페이스(UI) 라이브러리이다. 선언형(Declarative) 방식과 컴포넌트 기반 구조를 통해 복잡한 웹 애플리케이션을 효율적으로 구축할 수 있다. React는 Virtual DOM(가상 DOM)이라는 개념을 도입해 실제 DOM 조작을 최소화함으로써 성능을 최적화하고, Hook을 통해 함수형 컴포넌트에서도 상태 관리와 사이드 이펙트를 손쉽게 구현한다.


역사

연도 주요 사건
2011 페이스북 내부 프로젝트 “FaxJS”(후에 React) 시작
2013 오픈소스 공개 (BSD‑3-Clause)
2015 React Native 발표 – 모바일 앱 개발 지원
2017 Hooks 도입 (v16.8)
2020 Concurrent Mode(실험적) 및 Suspense 확대
2022 React 18 출시 – 자동 배치, 스트리밍 서버 렌더링 등

핵심 개념

1. 컴포넌트(Component)

UI를 재사용 가능한 단위로 분리한 것이다. 크게 클래스 컴포넌트함수형 컴포넌트가 있다. 현재는 Hook을 사용한 함수형 컴포넌트가 권장된다.

2. JSX

JavaScript 안에 XML‑like 문법을 삽입한 확장 문법이다. React.createElement 호출을 자동으로 변환해준다. 예시:

function Greeting({ name }) {
  return <h1>Hello, {name}!</h1>;
}

주의: JSX는 브라우저가 직접 이해하지 못하므로 Babel 같은 트랜스파일러가 필요하다.

3. Virtual DOM

React는 실제 DOM 대신 메모리 상에 가상의 DOM 트리를 유지한다. 상태가 변하면 새로운 Virtual DOM을 만들고, diff 알고리즘을 통해 변경된 부분만 실제 DOM에 적용한다. 이를 통해 렌더링 비용을 크게 줄인다.

4. State & Props

  • Props(속성): 부모 컴포넌트가 자식에게 전달하는 읽기 전용 데이터.
  • State(상태): 컴포넌트 내부에서 변경 가능한 데이터. useState Hook을 통해 선언한다.

import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);
  return (
    <button onClick={() => setCount(count + 1)}>
      클릭 횟수: {count}
    </button>
  );
}

5. Hook

함수형 컴포넌트에서 React 기능(state, lifecycle 등)을 사용할 수 있게 해주는 함수 집합이다. 주요 Hook:

Hook 용도
useState 로컬 상태 관리
useEffect 부수 효과(데이터 fetch, 구독 등)
useContext 전역 컨텍스트 접근
useMemo 연산 결과 메모이제이션
useCallback 콜백 함수 메모이제이션
useRef DOM 엘리먼트 또는 값 저장(리렌더 방지)

주요 기능 및 API

1. 렌더링 방식

  • 동기 렌더링(React 17 이하)
  • 동시성 렌더링(Concurrent Mode, React 18) – UI 응답성을 향상시킨다.

2. 라우팅 – React Router

SPA(Single Page Application)에서 URL 기반 페이지 전환을 담당한다.

import { BrowserRouter, Routes, Route } from "react-router-dom";

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
      </Routes>
    </BrowserRouter>
  );
}

3. 전역 상태 관리 – Redux, Recoil, Zustand 등

React 자체만으로도 충분히 상태를 관리할 수 있지만, 복잡한 트리 구조에서는 전역 상태 관리 라이브러리를 사용한다.

4. 서버 사이드 렌더링(SSR) – Next.js

React 컴포넌트를 서버에서 미리 렌더링해 초기 로드 속도와 SEO를 개선한다.

5. 타입스크립트 지원

React는 TypeScript와의 호환성이 뛰어나며, FC<Props>와 같은 제네릭 타입을 통해 컴포넌트 인터페이스를 명시한다.

import React, { FC } from 'react';

interface Props {
  title: string;
  count?: number;
}

const Header: FC<Props> = ({ title, count = 0 }) => (
  <h1>{title} ({count})</h1>
);


개발 환경 설정

단계 내용 명령어
1 프로젝트 초기화 npx create-react-app my-app
2 TypeScript 추가 npm install --save-dev typescript @types/react @types/react-dom
3 ESLint/Prettier 설정 npm i -D eslint prettier eslint-plugin-react
4 Babel/webpack 커스터마이징(필요 시) npm i -D @babel/core @babel/preset-react webpack
5 테스트 도구 설치 npm i -D jest @testing-library/react

Tip: create-vite를 이용하면 Vite 기반 초경량 React 프로젝트를 빠르게 만들 수 있다.


성능 최적화 팁

  1. 불필요한 렌더링 방지
  2. React.memo(컴포넌트 메모이제이션)
  3. useMemo / useCallback 활용

  4. 코드 스플리팅

  5. React.lazySuspense로 라우트 별 청크 분리

  6. 이미지 최적화

  7. srcsetloading="lazy" 사용

  8. Concurrent Mode(React 18) 활용

  9. startTransition으로 낮은 우선순위 작업을 구분

  10. 프로파일링

  11. React DevTools → Profiler 탭

다른 프레임워크와 비교

항목 React Vue.js Angular
주요 패러다임 컴포넌트 + 함수형 컴포넌트 + 옵션 API / Composition API 컴포넌트 + 의존성 주입
학습 곡선 중간 (JSX, Hook) 낮음 (템플릿) 높음 (TypeScript + RxJS)
생태계 풍부(Next.js, Redux, React Native) 비교적 작음 공식적인 솔루션이 풍부
성능 Virtual DOM + Concurrent Mode Virtual DOM + 최적화된 반응형 시스템 실제 DOM + Change Detection
기업 채택 Facebook, Instagram, Airbnb Alibaba, Xiaomi Google, Microsoft

생태계와 주요 라이브러리

카테고리 라이브러리 설명
라우팅 React Router 선언형 라우팅
상태 관리 Redux, Recoil, Zustand 전역 상태 관리
UI 컴포넌트 Material‑UI, Ant Design, Chakra UI 디자인 시스템
데이터 페칭 React Query, SWR 캐시 기반 비동기 데이터 관리
테스트 Jest, React Testing Library 유닛·통합 테스트
모바일 React Native iOS/Android 네이티브 앱
서버 사이드 Next.js, Remix SSR/SSG(정적 사이트 생성)

커뮤니티 및 학습 자료

  • 공식 문서: https://reactjs.org/
  • GitHub 레포지토리: https://github.com/facebook/react
  • Stack Overflow: reactjs 태그 (활발한 Q&A)
  • Discord/Slack: reactiflux 커뮤니티
  • 블로그·튜토리얼: Kent C. Dodds, Dan Abramov(React 팀) 블로그

참고 자료

  1. React 공식 홈페이지 – “Getting Started”, “Hooks API Reference”.
  2. “Learning React” (Alex Banks, Eve Porcello) – 입문서.
  3. “Fullstack React” – 실전 프로젝트 중심 가이드.
  4. Dan Abramov, “You Might Not Need Redux” – 상태 관리 패턴.
  5. React Conf 2023 발표 자료 – 최신 기능(Concurrent Mode, Server Components) 정리.

요약
React는 컴포넌트 기반 UI 개발을 위한 현대적인 라이브러리이며, Virtual DOM, Hook, Concurrent Mode 등 혁신적인 기술을 통해 대규모 웹 애플리케이션을 효율적으로 구축할 수 있다. 풍부한 생태계와 활발한 커뮤니티 덕분에 초보자부터 기업 수준까지 널리 활용되고 있다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gpt-oss-120b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?