프론트엔드/React

2. React 컴포넌트

2023. 3. 22. 22:04

React포스팅 중 첫번째 포스팅인 jsx문법을 마치고

문법을 알았다면! 그다음에 아주아주 중요한!! 컴포넌트에 대해 써보자!

 

리액트로 만들어진 웹사이트 및 화면은 컴포넌트로 구성이 되어있기 때문에

리액트를 쓴다?? 하면 엄청나게 중요하다.

빡세게 기초부터 공부해두자!!

 

 

 

 

알아야쓰지... 리액트 컴포넌트가 뭐야??

그쵸?? 알아야 쓰든가말든가 하죠 한번 알아봅시다!!

리액트 컴포넌트는 역할도 많고 이점이 상당히 많은 친구다

뭐... 한마디로 정해보면

 

리액트의 핵심 빌딩 블록중 하나

 

즉, 리액트에서 개발한 모든 애플리케이션은

컴포넌트라는 조각으로 구성이 된다.

그런 컴포넌트로 UI구축 작업을 훨씬 쉽게 만듬.

 

그리고, "props"라는 임의의 입력을 받고

화면에 어떻게 표시되는지 기술하는 리액트 엘리먼트를 반환

props는 다음에 자세히 알아보도록하자!!

 

 

뭐... 그렇게나 좋대요!!

 

 

위의 사진에서 보다시피 홈페이지를 빨간박스처럼 세분화하여

개별 컴포넌트로 볼 수 있고, 마지막으로 모든항목을 병합할 수 있음.

 

따라서, 개별 컴포넌트를 써서 홈페이지의 최종 UI가 될 상위 컴포넌트를 만든다.

 


 

 

⭐️ 그럼, 컴포넌트에 대해 자세히 알아보자!!!

 

https://hanamon.kr/codestates-til-%ED%95%AD%ED%95%B4%EC%9D%BC%EC%A7%80-40%EC%9D%BC%EC%B0%A8/

 

🖋️ 리액트 컴포넌트란?

  • 리액트로 만들어진 앱을 이루는 최소한의 단위
  • 독립적으로 구성하여 재사용을 할 수 있고,
    이를 통해 새로운 컴포넌트를 쉽게 만들 수 있음
  • 매우중요 !! 🔥컴포넌트 이름은 항상 대문자로 시작!!🔥 
  • UI를 재사용 가능한 개별적인 여러조각으로 나누고,
    각 조각을 개별적으로 나누어 코딩

 

 

 

✌🏻 컴포넌트의 종류??

 

리액트 컴포넌트는 크게 함수형 컴포넌트, 클래스형 컴포넌트로 나뉨

 

● 함수형 컴포넌트 (Stateless Functional Component)

  • 가장 간단하게 컴포넌트를 정의하는 방법
  • 데이터를 매개변수로 받을 수도 있고, 안받을 수도 있음
  • 프로그램의 다른 컴포넌트를 인식하지 못함

 

함수형 컴포넌트

 

 

 

● 클래스형 컴포넌트 (Class Component)

  • 컴포넌트 구성요소, 리액트 생명주기 모두 포함
  • 프로퍼티, state, 생명주기 함수가 필요한
    구조의 컴포넌트를 만들때 사용
  • 함수형 컴포넌트보다 약간 더 복잡
  • 프로그램의 다른 컴포넌트를 인식하여 서로 작동 가능

클래스형 컴포넌트

 

 

⛑️ 함수형 컴포넌트와 클래스 컴포넌트 선택시 주의!!

컴포넌트가 다른 컴포넌트와 상호작용하거나 작업할
필요가 없다고 확신할 경우에만 함수 컴포넌트 사용할 것!

즉, 어떤 컴포넌트가 다른 컴포넌트의 데이터가
불필요하다면 함수 컴포넌트를 사용하는걸 권장

사실... 그냥 함수형 컴포넌트 쓰자!!!!
요즘은 그냥 함수형 컴포넌트가 좋다!!

함수형 컴포넌트가 단점들이 많이 보완되어서
함수형을 안쓰고 클래스 컴포넌트를 쓸 이유가없다!!

 

 


 

 

 

⚒️ 그럼 컴포넌트를 어떻게 사용할까??

 

간단하게 Header.jsx, Main.jsx, Footer.jsx

세개의 jsx확장자 파일을 만들어서 이 세개의 컴포넌트로

각자 구성을하고, 상위 컴포넌트(App.js) 에서 병합해보자!!

 

 

1️⃣ 먼저, Header 컴포넌트의 코드를 살펴보자

 

Header.jsx

 

함수형 컴포넌트로 Header라는 이름을 주었다.

컴포넌트의 이름 첫글자는 항상 대문자!!! 잊지말자

 

export로 다른파일에서 이 Header.jsx파일을

import할때, 불러올 수 있도록 정의해준다.

 

 

 

 

2️⃣ 다음, Main 컴포넌트 코드를보자.

 

Main.jsx

 

Header 컴포넌트와 똑같이

컴포넌트 이름 첫글자는 대문자로 해주었고,

안에 h1태그로 내용을 넣어주었다.

 

 

 

 

 

3️⃣ 그 다음으로, Footer 컴포넌트 코드를 보자

 

Footer.jsx

 

위의 두개의 컴포넌트와 똑같은 구성이다!!

역시 컴포넌트의 이름의 첫글자 대문자!!

아무리 강조해도 부족하다!

 

 

 

 

 

4️⃣ 위의 컴포넌트들을 상위 컴포넌트(App.js)에서 병합할 것이다.

 

App.js

 

상위 컴포넌트인 App.js에서 3개의 하위 컴포넌트들을

병합할 것이다. App.js 최상단에 import를 통해 불러와야지만

App.js 컴포넌트에서 사용할 수 있다는 것을 알아두자!!

이렇게 import를 하기위해 각 3개의 하위 컴포넌트에서

마지막 구문에 export를 해준 것이다!!

 

npm start를 해보면 위와 같은 결과가 출력이 된다!!

이렇게 간단하게 컴포넌트를 만들고 테스트를 해보았다. 👏🏻👏🏻

 

이게 3개의 컴포넌트만 해서 이렇게 간단하지만
많아 지면 많이 헷갈릴거같다.
헷갈리지 않게 꼭 기본부터 차근차근 잘 쌓아가자!!

 

'프론트엔드/React' 카테고리의 다른 글
  • 5. State (상태)
  • 4. Props (프로퍼티)
  • 3. React Router (리액트 라우터)
  • 1. JSX 문법
plla2
plla2
프론트엔드 개발자가 되고픈 개미의 일대기 🐜
plla2
코린이 "개미"의 개발블로그
plla2
전체
오늘
어제
  • 분류 전체보기 (112)
    • 프론트엔드 (40)
      • CSS (1)
      • JS (16)
      • React (17)
      • Redux (2)
      • TS (4)
      • Pre-project (0)
    • 프로젝트 회고, 리팩토링 (14)
      • 포트폴리오 프로젝트 (2)
      • moviepop 팀 프로젝트 (1)
      • lofi 프로젝트 (2)
      • 스택오버플로우 팀 프로젝트 (5)
      • commerce 프로젝트 (1)
    • 코테 (26)
      • koans, 코플릿, sprint (9)
      • 데일리 코딩 (17)
    • 백엔드 (5)
      • Node (4)
    • CS (6)
      • 알고리즘 (2)
      • 자료구조 (1)
      • 네트워크 (1)
    • 회고, 면접준비 (16)
      • Next.js Doc 번역 (7)
      • 면접 답변용 정리 (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • camelCase
  • State
  • 배열렌더링
  • 배열분해
  • Twittler
  • 비동기
  • NodeList
  • js
  • React
  • 상태
  • 리액트 라우터
  • 동기 비동기
  • 태그래핑
  • 프로토타입 체인
  • 데일리 코딩
  • 객체분해
  • 프로토타입
  • 프론트엔드
  • 중첩구조분해
  • dom
  • 데일리코딩
  • 렉시컬
  • 클래스형
  • 트리 자료구조
  • 구조 분해 할당
  • 정규식
  • HTMLCollection
  • 블로킹 논블로킹
  • 페이지네이션
  • 단어의 시작

최근 댓글

최근 글

hELLO · Designed By 정상우.
plla2
2. React 컴포넌트
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.