리액트/기초

리액트란 무엇인가?

lamarcK 2025. 4. 4. 17:26

React는 Facebook에서 개발한 JavaScript 라이브러리로, 사용자 인터페이스(UI)를 구축하기 위한 도구이다.

간단히 말하자면 게임(자바스크립트)의 확장팩 같은 개념이다.

기본 게임 (바닐라 JavaScript)

  • 기본적인 기능만 있음
  • 처음부터 모든 것을 직접 만들어야 함
  • 복잡한 기능 구현이 어려움

확장팩 (React)

  • 추가 기능들이 미리 준비되어 있음
  • 편리한 도구들이 많이 포함됨
  • 복잡한 기능을 쉽게 구현 가능
  • 커뮤니티에서 만든 추가 확장팩(라이브러리)도 많음

게임 비유로 React의 특징을 설명하면:

  1. 컴포넌트 = 게임의 아이템 조합 시스템
  2. Virtual DOM = 게임의 최적화 패치
  3. JSX = 더 쉬운 조작법
  4. npm = 게임 모드/아이템 상점

리액트의 목적은 기존 JavaScript의 문제점들을 개선하는 것이다.

기존 JavaScript의 문제점

  1. DOM 조작의 비효율성
    • 변경될 때마다 전체 페이지 리렌더링
    • 성능 저하 발생
    • 복잡한 DOM 조작 코드
  2.  코드 재사용의 어려움
    • 같은 코드 반복 작성
    • 유지보수 어려움
    • 일관성 유지 힘듦
  3.  상태 관리의 복잡성
    • 데이터 변화 추적 어려움
    • 복잡한 이벤트 핸들링
    • 전역 변수 관리 문제

React의 해결책

  1. Virtual DOM
    • 효율적인 렌더링
    • 성능 최적화
  2. 컴포넌트 기반
    • 코드 재사용성 증가
    • 모듈화된 개발
  3. 단방향 데이터 흐름
    • 예측 가능한 상태 관리
    • 디버깅 용이

라이브러리?

더보기

라이브러리는 프로그래밍에서 자주 사용되는 기능들을 모아둔 코드의 집합입니다.

1. 기본 개념

- 미리 작성된 코드 모음

- 반복적으로 사용되는 기능들을 패키지화

- 개발자가 처음부터 코드를 작성할 필요 없음

2. 실생활 비유

- 도서관(Library)처럼 필요한 것을 골라서 사용

- 요리할 때 미리 만들어진 소스를 사용하는 것과 비슷

3. 장점

- 개발 시간 단축

- 코드 재사용성 증

- 검증된 코드 사용으로 안정성 확보

- 유지보수 용이

4. 예시

- jQuery: JavaScript 작업을 쉽게 만드는 라이브러리

- React: UI 개발을 위한 라이브러리 - Lodash: 데이터 처리를 돕는 유틸리티 라이브러리

5. 프레임워크와의 차이

- 라이브러리: 필요한 부분만 선택적으로 사용 가능

- 프레임워크: 전체적인 구조를 제공하며 규칙을 따라야 함 라이브러리는 개발자의 작업을 효율적으로 만들어주는 도구라고 생각하면 됩니다.

주요 특징

1. Component 기반 구조: 재사용 가능한 UI 조각들을 독립적으로 만들어서 레고처럼 조립하는 방식
2. Virtual DOM 사용: 실제 DOM을 직접 수정하지 않고 가상의 DOM을 먼저 수정해서 성능을 최적화하는 방식
3. 단방향 데이터 흐름: 데이터가 부모에서 자식으로만 흐르도록 해서 예측 가능하고 디버깅하기 쉽게 만드는 방식
4. JSX 문법 지원: JavaScript 안에서 HTML같은 문법을 사용할 수 있게 해주는 특별한 문법
5. 선언적 프로그래밍 방식: "어떻게 할지"가 아닌 "무엇을 할지"만 정의하여 코드를 더 직관적으로 작성하는 방식

Components (컴포넌트)

  • UI를 재사용 가능한 독립적인 조각으로 나눔
  • 클래스형과 함수형 컴포넌트 존재

Props와 State

  • Props: 부모 컴포넌트에서 자식 컴포넌트로 데이터 전달
  • State: 컴포넌트 내부에서 관리되는 데이터

장점:

  • 높은 재사용성
  • 효율적인 렌더링
  • 큰 개발자 커뮤니티
  • 다양한 라이브러리 지원
  • 쉬운 유지보수

활용:

  • 웹 애플리케이션 개발
  • 모바일 앱 개발 (React Native)
  • 단일 페이지 애플리케이션(SPA) 구축

생태계:

  • Redux (상태 관리)
  • React Router (라우팅)
  • Material-UI (UI 프레임워크)
  • Next.js (SSR 프레임워크)