일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스코프 체인
- CSS
- 자바스크립트 함수
- 깊은 복사
- 브라우저 렌더링원리
- async/await
- 실행 컨텍스트
- 자바스크립트의 클래스
- 세션 스토리지
- 로컬 스토리지
- 주소창에 naver 입력시 일어나는 일
- 이벤트 버블링
- MPA
- 클라이언트 사이드 렌더링
- 리액트의 생명 주기
- 자바스크립트
- 리액트
- react
- 호이스팅
- 프로미스
- 가상 dom
- 이벤트 캡처링
- props와 state 차이점
- 서버 사이드 렌더링
- polyfill
- 얕은 복사
- webpack
- 변수 생성 단계
- CORS
- undeclared
Archives
- Today
- Total
Gapus Dev Blog
[React] 컴포넌트에 대해 본문
컴포넌트(Components)
설명
- JavaScript 기반의 프론트엔드 라이브러리로, 재사용 가능한 UI 요소인 컴포넌트를 통해 웹 애플리케이션 구축 사용
- 컴포넌트는 UI를 작은 독립적인 조각으로 분리하여 개발하여 개발을 단순화하고 유지보수성을 향상
- 리액트 애플리케이션은 여러 개의 컴포넌트로 이루어져 있으며, 각 컴포넌트는 특정한 기능을 수행하고 UI를 표현
- 자체적으로 상태(state)를 가지고 있을 수 있으며, 이 상태를 기반으로 UI가 업데이트
- 속성(props)를 통해 외부로부터 데이터를 전달 받을 수 있다.
- 클래스 컴포넌트와 함수형 컴포넌트로 나눌 수 있다.
사용하는 이유
재사용성
- 컴포넌트는 독립적인 UI 요소로서, 여러 곳에서 반복적으로 사용 가능
- 컴포넌트를 재사용함으로써 개발 생산성을 향상
- 예를 들어, 로그인 폼, 버튼과 같은 UI 요소는 여러 페이지나 다른 애플리케이션에서도 동일하게 사용
모듈화
- 컴포넌트는 작은 조각으로 분리되어 개발
- 모듈화된 컴포넌트는 개별적으로 개발하고 테스트할 수 있으며,
필요한 경우 다른 컴포넌트와 조합하여 새로운 기능 개발 가능 - 코드의 가독성과 유지 보수성을 향상
상태 관리
- 컴포넌트는 자체적으로 상태를 가진다.
- 이 상태는 컴포넌트 내부에서 변경되고, 변경된 상태에 따라 UI가 업데이트
- 컴포넌트 단위로 상태를 관리함으로써 애플리케이션의 복잡성을 낮추고, 상태 관리를 용이
성능 최적화
- 리액트는 가상 돔(Virtual DOM)을 사용하여 성능을 최적화
- 컴포넌트의 상태가 변경되면, 리액트는 변경된 부분만 실제 돔에 업데이트
- 불필요한 렌더링을 방지하고, 애플리케이션의 성능을 향상
팀 협업
- 컴포넌트 기반의 개발은 다수의 개발자가 협업할 때 효과적
- 각 개발자는 자신이 맡은 컴포넌트를 독립적으로 개발하고, 필요한 경우 다른 컴포넌트와
조합하여 애플리케이션을 구축 - 팀의 업무 분담과 협업을 원할
컴포넌트 예시
클래스형 컴포넌트
import React, { Component } from 'react';
class Welcome extends Component {
render() {
return <h1>Hello, {this.props.name}!</h1>;
}
}
export default Welcome;
함수형 컴포넌트
import React from 'react';
const Welcome = (props) => {
return <h1>Hello, {props.name}!</h1>;
};
export default Welcome;
클래스형과 함수형 컴포넌트의 차이점
문법
- 클래스형 컴포넌트는 ES6 클래스 문법을 사용하여 정의
- 함수형 컴포넌트는 JavsScript 함수 문법을 사용하여 정의
상태 관리
- 클래스형 컴포넌트는 state를 사용하여 내부 상태를 관리
- 함수형 컴포넌트는 이전에는 상태를 관리할 수 없었지만, 리액트 16.8 버전부터
도입된 훅(Hook)을 사용하여 상태 관리 가능
라이프사이클 메서드
- 클래스형 컴포넌트는 라이프사이클 메서드를 사용하여 컴포넌트의 생명주기 이벤트에 대응 가능
- componentDidMount, componentDidUpdate, compoentWillUnmount 등의 메서드를 사용하여
특정 시점에 코드를 실행 가능 - 함수형 컴포넌트는 초기 렌더링 이후에 실행되는 useEffect 훅을 사용하여 비슷한 기능을 구현
코드의 가독성과 간결성
- 클래스형 컴포넌트는 render() 메서드를 포함해야 하고, this 키워드를 사용해야 하는 등의 추가적인 구문이 있기 때문에 코드가 상대적으로 복잡
- 함수형 컴포넌트는 일반적으로 코드가 간결하고 읽기 쉬움
성능
- 클래스형 컴포넌트는 가상 돔(Virtual DOM)을 사용하는 데 비해 약간의 성능 오버헤드가 있을 수 있음
- 함수형 컴포넌트는 최적화된 훅(Hook)을 사용하여 성능을 향상
- 특히, React.memo를 사용하여 함수형 컴포넌트의 재렌더링을 방지
'프론트엔드 > React' 카테고리의 다른 글
[React] 훅(Hook)에 대해 (1) | 2023.11.30 |
---|---|
[React] props와 state에 대해 (1) | 2023.11.28 |
[React] 리액트의 생명 주기(Life Cycle) (0) | 2023.11.27 |
[React] 가상 DOM의 개념과 DOM 과의 차이에 대해 (1) | 2023.11.24 |
[React] 리액트(React)에 대해 (2) | 2023.11.23 |