Gapus Dev Blog

[React] 리액트(React)에 대해 본문

프론트엔드/React

[React] 리액트(React)에 대해

Gapus 2023. 11. 23. 23:31

리액트(React)

 

설명

 

  • 리액트는 페이스북(현재 메타)에서 개발된 사용자 인터페이스(UI)를 구축하기 위한 JavaScript 라이브러리
  • 리액트를 사용하면 동적이고 반응형인 웹 애플리케이션 개발 가능
  • 컴포넌트 기반 아키텍처를 사용하여 UI를 작은 조각으로 분할하고, 이를 조합하여 복잡한 UI 구성 가능

 


 

배우기 위해 필요한 것

 

JavaScript 기초

 

  • React는 JavaScript 라이브러리로 JavaScript 기본 개념과 문법을 이해하는 것이 중요
  • 변수, 함수, 조건문, 반복문 등의 기본 개념 숙지

 

HTML 및 CSS 기초

 

  • React에서 UI를 개발하기 위해 HTML과 CSS의 기본적인 지식 필요
  • HTML을 사용하여 컴포넌트 구조를 작성, CSS를 사용하여 스타일링을 할 수 있어야 한다.

 

JSX 문법

 

  • React에서는 JSX 문법을 사용하여 JavaScript 코드 안에 HTML과 유사한 구문을 작성
  • JSX의 기본적인 문법과 작동 방식을 이해해야 함

 

React의 기본 개념 이해

 

  • React의 주요 개념인 컴포넌트, props, state, 가상 DOM 등을 이해 해야한다.
  • REACT의 동작 원리와 데이터 흐름을 파악하는 것이 중요

 

React 개발 도구

 

  • React를 개발하기 위해 Node.js와 npm(Node Package Manager)을 설치
  • React 개발에 필요한 패키지와 도구들을 관리하고 사용할 수 있어야 한다.

 

학습 자료와 튜토리얼

 

  • React를 배우기 위해 다양한 학습 자료와 튜토리얼을 활용할 수 있어야 한다.
  • 공식 React 문서, 온라인 강의 등을 활용하여 학습 가능

 

실습과 프로젝트

 

  • React를 배우면서 실습과 프로젝트를 진행하는 것이 중요
  • 간단한 예제부터 점차적으로 복잡한 프로젝트를 구현하면서 실제로 React를 사용하는 경험 쌓아야 함

 

커뮤니티와 협업

 

  • React는 활발한 커뮤니티와 생태계를 가지고 있으므로, 다른 개발자들과의 협업과 지원 받을 수 있다.
  • 온라인 개발자 커뮤니티나 포럼에 참여하여 질문하고 답변하는 등의 활동을 통해 지식을 공유하고 성장 가능

 


 

특징

 

컴포넌트 기반

 

  • React는 컴포넌트 기반 아키텍처를 사용
  • UI를 작은 독립적인 컴포넌트로 분리하여 개발 가능
  • 코드의 재사용성과 유지보수성이 향상

 

Virtual DOM

 

  • React는 가상 DOM을 사용하여 성능을 최적화
  • 가상 DOM은 실제 DOM의 가벼운 복사본으로, React는 상태 변경에 따라
    가상 DOM을 업데이트하고 필요한 경우에만 실제 DOM에 반영
  • 효율적인 UI 렌더링 가능

 

JSX 문법

 

  • React는 JSX라는 JavaScript와 유사한 문법을 사용
  • JSX는 JavaScript 코드 안에 HTML과 유사한 구문을 작성 가능
  • JSX는 컴파일 되면서 React 엘리먼트로 변환되어 렌더링 된다.

 

단반향 데이터 흐름

 

  • React는 단반향 데이터 흐름을 강조
  • 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달할 때는 props(속성)을 사용
  • 데이터의 흐름을 예측 가능하고 관리하기 쉽게 만든다.

 

상태 관리

 

  • React 컴포넌트는 상태(State)를 가질 수 있다.
  • State는 컴포넌트 내부에서 관리되는 변경한 데이터
  • 상태의 변경에 따라 UI가 업데이트되고 다시 렌더링

 

생태계와 커뮤니티

 

  • React는 매우 활발한 생태계와 커뮤니티 소유
  • 다양한 라이브러리, 도구, 컴포넌트 등이 개발되어 있어 개발자들은 필요한 기능을 쉽게 구현하고 문제 해결 가능

 

React Native

 

  • React Native는 React를 기반으로 네이티브 앱을 개발할 수 있는 프레임워크
  • 웹 애플리케이션과 동일한 코드로 iOS 및 Android 앱을 개발 가능

 

테스트 용이성

 

  • React는 테스트하기 쉬운 특징을 가지고 있다.
  • 각각의 컴포넌트는 독립적으로 테스트할 수 있고, 가상 DOM을 사용하여
    렌더링 결과를 비교하는 등의 테스트 기능을 제공

 


 

예시

 

클래스형 컴포넌트

 

import React from 'react';

class HelloWorld extends React.Component {
  render() {
    return (
      <div>
        <h1>Hello, React!</h1>
      </div>
    );
  }
}

export default HelloWorld;

 

 

함수형 컴포넌트

 

import React from 'react';

function HelloWorld() {
  return (
    <div>
      <h1>Hello, React!</h1>
    </div>
  );
}

export default HelloWorld;

 

 


 

기본 문법

 

JSX 문법

 

  • JSX는 JavaScript의 확장 문법으로, JS 코드 안에 HTML과 유사한 구문을 작성 가능
  • JSX는 컴파일 되면서 React 엘리먼트로 변환
  • 예시
import React from 'react';

function JSXExample() {
  return <div>Hello, React!</div>;
}

export default JSXExample;

 

 

컴포넌트

 

  • React에서 UI를 구성하는 기본 단위는 컴포넌트
  • 컴포넌트는 독립적인 기능을 가지며, 재사용 가능한 UI 조각
  • 클래스 컴포넌트와 함수형 컴포넌트로 작성 가능
  • 예시
import React from 'react';

function PropsExample(props) {
  return <div>{props.message}</div>;
}

export default PropsExample;

 

 

속성 (Props)

 

  • 컴포넌트는 속성 (props)을 통해 데이터를 전달 가능
  • 속성은 부모 컴포넌트에서 자식 컴포넌트로 전달되며, 컴포넌트 내부에서는 props 객체로 접근 가능
  • 예시
import React, { useState } from 'react';

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

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

export default StateExample;

 

 

상태 (State)

 

  • State는 컴포넌트의 내부 데이터를 관리하기 위해 사용
  • 클래스 컴포넌트에서는 state 객체를 사용하여 상태를 관리하며, 상태 변경에 따라 UI가 업데이트
  • 함수형 컴포넌트에서는 React Hooks를 사용하여 상태를 관리
  • 예시
import React, { useState } from 'react';

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

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

export default StateExample;

 

 

이벤트 처리

 

  • React에서는 이벤트 처리를 위해 이벤트 핸들러를 사용
  • JSX 문법에서는 onClick, onChange와 같은 이벤트 핸들러를 사용하여 이벤트를 처리
  • 예시
import React from 'react';

function EventHandlingExample() {
  const handleClick = () => {
    alert('Button clicked!');
  };

  return <button onClick={handleClick}>Click me</button>;
}

export default EventHandlingExample;

 

 

조건문과 반복문

 

  • JSX 내에서는 JS의 조건문과 반복문을 사용 불가능
  • 대신 삼항 연산자나 Array.map() 과 같은 JS의 기능을 사용하여 조건문과 반복문 작성 가능
  • 예시
import React from 'react';

function ConditionalLoopExample() {
  const isLoggedIn = true;
  const numbers = [1, 2, 3, 4, 5];

  return (
    <div>
      {isLoggedIn ? <p>Welcome, User!</p> : <p>Please log in.</p>}
      <ul>
        {numbers.map((number) => (
          <li key={number}>{number}</li>
        ))}
      </ul>
    </div>
  );
}

export default ConditionalLoopExample;

 

 

스타일링

 

  • React에서는 CSS 스타일을 적용하기 위해 클래스 이름을 사용
  • 클래스 이름은 className 속성을 통해 지정하며, CSS 파일이나 인라인 스타일을 사용 가능
  • 예시
import React from 'react';

function StylingExample() {
  return (
    <div className="container">
      <h1 style={{ color: 'blue', fontSize: '24px' }}>Styled Heading</h1>
      <p className="text">This is a styled paragraph.</p>
    </div>
  );
}

export default StylingExample;

 

 


 

React를 사용할 때 유요한 기술

 

React Router

 

  • React Router는 React 애플리케이션에서 라우팅을 관리하기 위한 라이브러리
  • 다양한 페이지와 URL 경로를 지원하며, 동적 라우터와 네스팅된 라우터 등을 구현 가능

 

Redux

 

  • Redux는 React 애플리케이션의 상태 관리를 위한 라이브러리
  • 애플리케이션의 전역 상태를 중앙 집중식으로 관리하고, 상태 변경을 예측 가능한 방식으로 처리 가능

 

React Hooks

 

  • React Hooks는 함수형 컴포넌트에서 상태 관리와 라이프사이클 기능을 사용할 수 있게 해주는 기술
  • useState, useEffect, useContext 등의 훅을 사용하여 코드를 간결하게 작성 가능

 

Styled Components

 

  • Styled Components는 CSS-in-JS 라이브러리로, JS 코드 안에 CSS 스타일을 작성 가능
  • 컴포넌트에 스타일을 적용하고 동적으로 스타일을 변경 가능

 

Axios

 

  • Axios는 HTTP 클라이언트 라이브러리
  • React 애플리케이션에서 서버와 통신을 담당
  • REST API 호출이나 데이터 요청에 사용되며, 비동기적으로 데이터를 가져올 수 있다.

 

React Testing Library

 

  • React Testing Library는 React 컴포넌트의 테스트를 쉽게 작성할 수 있게 해주는 도구
  • 컴포넌트의 렌더링, 이벤트 처리, 상태 변화 등을 테스트 가능

 

Next.js

 

  • Next.js React 기반의 프레임워크로, 서버 사이드 렌더링(SSR)과 정적 사이트 생성(Static Site Generation)을 지원
  • SEO 최적화와 초기 로딩 속도 개성에 도움

 

React Native

 

  • React Native는 React를 사용하여 iOS 및 Android 모바일 애플리케이션을 개발할 수 있는 프레임워크
  • 하나의 코드베이스로 여러 플랫폼에서 앱을 개발 가능