[React] React란?

artp·2025년 4월 20일

react

목록 보기
1/44
post-thumbnail

React란?

React(리액트)는 Facebook(현재 Meta)에서 만든 자바스크립트 UI 라이브러리입니다.
복잡한 사용자 인터페이스를 더 빠르고 효율적으로 만들기 위해 2011년 Facebook의 엔지니어 Jordan Walke에 의해 개발되었으며, 2013년 오픈소스로 공개되어 현재는 전 세계에서 가장 널리 사용되는 프론트엔드 기술 중 하나입니다.

React의 등장 배경

초기 웹 개발은 HTML, CSS, JavaScript를 이용한 정적인 웹 페이지 위주였으며, 이후 jQuery와 같은 DOM 조작 라이브러리를 통해 동적인 기능이 가능해졌습니다. 하지만 규모가 커지고 사용자와의 상호작용이 복잡해지자 다음과 같은 문제들이 생겼습니다.

  • DOM을 직접 조작하는 방식은 복잡하고 비효율적
  • 상태 관리와 UI 업데이트가 번거롭고 에러가 많음
  • 반복적인 코드로 인해 유지보수가 어려움

DOM은 문서 객체 모델(Document Object Model)의 약어로 웹 페이지 문서를 트리 구조의 노드로 표현합니다. JavaScript를 사용하여 이러한 노드를 조작할 수 있습니다. DOM은 웹 페이지의 요소에 동적으로 접근하고 수정하는 데 사용되며, 웹 애플리케이션의 동적인 기능을 구현하는 데 중요한 역할을 합니다.

이러한 문제를 해결하기 위해 Angular, Vue, React와 같은 프론트엔드 프레임워크/라이브러리들이 등장했습니다. 그 중에서도 React는 단순하고 유연한 구조, 높은 성능, 강력한 커뮤니티를 기반으로 가장 널리 사용되고 있습니다.

React의 핵심 특징

1. 컴포넌트 기반: UI를 재사용 가능한 컴포넌트 단위로 분리해 개발

리액트는 전체 UI를 작은 단위의 컴포넌트로 쪼개서 개발합니다.
각 컴포넌트는 독립적이며 재사용이 가능하고, 자신만의 상태(state)와 UI를 가질 수 있습니다.

예를 들어, 버튼(Button), 입력창(Input), 카드(Card), 헤더(Header) 등을 각각 컴포넌트로 만들고, 조립하듯이 화면을 구성합니다. 이 방식은 유지보수에 유리하고, 협업 시 역할 분담도 쉽게 만들어줍니다.

2. 선언형 UI: 상태(state)만 선언하면, UI는 자동으로 업데이트

리액트에서는 "어떻게" 바뀌는지를 명령하지 않고, "무엇을 보여줘야 하는지"만 선언합니다.
즉, 상태(state)가 바뀌면 자동으로 UI가 갱신됩니다.

복잡한 DOM 조작 없이, 코드의 UI 결과만 정의하면 되므로, 코드를 작성하는 입장에서 훨씬 직관적이고 오류가 줄어듭니다.

3. Virtual DOM (가상 DOM): 메모리에서 DOM을 조작하고, 실제 DOM에는 최소한의 변경만 반영하여 렌더링 성능 향상

리액트는 실제 DOM을 직접 조작하지 않고, 메모리상의 가상 DOM에서 먼저 변경을 수행합니다.
그리고 이전 가상 DOM과 비교한 뒤, 실제 DOM에는 변경된 부분만 최소한으로 반영합니다.

덕분에 브라우저의 리렌더링 비용이 줄어들어, 빠르고 효율적인 UI 업데이트가 가능합니다.

4. 단방향 데이터 흐름: 데이터가 부모에서 자식으로 흐르며 상태 예측이 쉬움

리액트는 부모 컴포넌트 → 자식 컴포넌트 방향으로만 데이터를 전달합니다 (단방향).
이러한 단방향 흐름은 데이터 흐름을 예측 가능하게 만들며, 디버깅과 상태 추적을 쉽게 도와줍니다.

물론 자식이 부모로 데이터를 전달할 수도 있지만, 그 경우 콜백 함수를 props로 전달하는 방식 등으로 구조가 명확하게 드러납니다.

5. JSX 문법: JavaScript 안에 HTML을 작성할 수 있어 가독성과 직관성이 뛰어남

JSX는 JavaScript 코드 안에서 HTML 태그를 작성할 수 있게 해주는 문법입니다.

const element = <h1>Hello, React!</h1>;

덕분에 UI 코드가 시각적으로 직관적이고, HTML 구조를 그대로 표현할 수 있어 학습 곡선이 낮아집니다.
또한 자바스크립트의 모든 기능을 함께 쓸 수 있습니다.

6. 풍부한 생태계: 리액트 라우터, 상태 관리 도구(Redux, Recoil 등), 수많은 UI 라이브러리들과 함께 사용

리액트는 단일 라이브러리로 시작했지만, 현재는 리액트 라우터, 상태 관리 도구(Redux, Recoil), Styled Components, Material UI 등 수많은 도구들과 함께 사용하는 생태계가 구축되어 있습니다.

이는 복잡한 요구사항(라우팅, 상태 관리, 스타일링 등)을 쉽게 해결해주며, 실무에서도 즉시 활용할 수 있는 환경을 제공합니다.

React를 사용하는 이유

1. 복잡한 사용자 인터페이스를 효율적으로 개발할 수 있음

상태 관리와 컴포넌트 구조 덕분에 화면이 자주 바뀌는 동적인 웹 애플리케이션(예: SNS, 게시판, 관리자 페이지 등)을 쉽게 구현할 수 있습니다.

2. 빠른 렌더링과 높은 성능 (Virtual DOM 덕분)

가상 돔 덕분에 변경된 부분만 렌더링되어, 전체 페이지를 다시 그리는 일반 방식보다 훨씬 빠르게 동작합니다.

3. UI 상태 변경을 자동으로 반영 (선언형 개발 방식)

상태(state)만 바꾸면 화면(UI)이 알아서 업데이트되므로, DOM 조작 코드를 줄일 수 있습니다.
코드량 감소 + 오류 감소 + 유지보수 편리

4. 대규모 프로젝트에서 코드 구조를 체계적으로 유지할 수 있음

컴포넌트 기반 구조 덕분에 코드의 분리와 재사용이 쉬워, 기능이 많은 프로젝트에서도 구조를 잘 유지할 수 있습니다.

5. 재사용 가능항 컴포넌트를 통해 개발 생산성과 유지보수성 향상

자주 사용하는 UI 요소(예: 버튼, 모달, 입력폼 등)를 하나의 컴포넌트로 만들면 다양한 곳에서 재사용할 수 있고, 유지보수도 한 곳에서 관리할 수 있습니다.

6. 기존 프로젝트에 일부만 적용하거나 점진적으로 도입 가능 (유연한 구조)

리액트는 프레임워크가 아니라 라이브러리이므로, 기존 웹 페이지의 일부에만 리액트를 적용해 점진적으로 전환할 수 있습니다.

예: 기존 서버 렌더링 페이지에 댓글 영역만 리액트로 구성하는 방식

7. 다른 프레임워크와의 혼용 가능 (라이브러리로서의 유연함)

리액트는 작은 UI 조각만 담당하는 라이브러리이기 때문에, Vue, JQuery 같은 다른 프레임워크와 함께 사용하는 것도 가능합니다.

8. React Native를 통해 모바일 앱 개발로 확장 가능 (크로스 플랫폼)

리액트로 학습한 컴포넌트 구조와 상태 관리를 그대로 유지하면서, 모바일 앱을 만들 수 있는 React Native가 존재합니다.

9. 방대한 커뮤니티와 생태계로 인해 자료, 지원, 오픈소스가 풍부

리액트는 전 세계에서 가장 많이 쓰이는 프론트엔드 라이브러리 중 하나입니다.
그래서 오류가 발생하거나 궁금한 점이 생겨도 검색만 하면 대부분 해결할 수 있고, 필요한 자료를 찾을 수 있습니다.

정리

React는 단순히 UI를 그리는 도구가 아니라, UI를 효율적으로 관리하고 확장 가능한 구조로 유지할 수 있게 해주는 도구입니다.

  • 개발자는 컴포넌트로 구조화된 UI를 만들고
  • 선언적으로 상태만 관리하며
  • 성능은 React가 Virtual DOM으로 알아서 처리해줍니다.

정리하자면, React는 복잡한 웹 앱의 UI를 더 빠르고 효율적으로 만들기 위해 등장한 UI 중심의 라이브러리이며, 개발자 경험과 성능, 확장성 측면에서 매우 뛰어난 도구입니다.

profile
donggyun_ee

0개의 댓글