복습
https://shins99.tistory.com/65
[React] 엘리먼트(element)
복습 https://shins99.tistory.com/63 [React] JSX 문법 복습 https://shins99.tistory.com/62 [React] JSX (JavaScript XML) 복습 https://shins99.tistory.com/61 [React] React 란? React란? - 사용자 인터페이스(UI)를 만들기 위해 사용되는
shins99.tistory.com
컴포넌트(component)
- React에서 컴포넌트란 자바스크립트 함수의 개념과 비슷하게 이해
- React에서는 애플리케이션의 UI를 설계할 때 사용자가 볼 수 있는 화면을 여러 개의 컴포넌트로 나누어 구성함
(각각의 컴포넌트를 개별적으로 관리가능)
- 데이터(props)를 입력 받아 View의 상태에 따라 화면에 어떻게 표시되는지 정의하는 React 엘리먼트를 반환
- 선언 방식에 따라 클래스 기반의 컴포넌트와 함수 기반의 컴포넌트로 구분
클래스 컴포넌트와 함수 컴포넌트
- App 컴포넌트 : function 키워드를 사용한 함수 컴포넌트
(컴포넌트를 정의하는 가장 간단한 방법 : 자바스크립트 함수를 작성)
함수 기반의 App 컴포넌트
1
2
3
4
5
6
7
|
export default function App() {
return (
<div>
<h1>Hello, World!</h1>
</div>
);
}
|
cs |
- lass 키워드를 사용하여 클래스 기반의 컴포넌트를 정의 가능
클래스 컴포넌트 :
- Component 클래스를 상속
- render() 메서드를 반드시 구현
- render() 메서드를 통해 화면에 보여주어야 할 JSX 표현식(expression)을 반환
클래스 기반의 App 컴포넌트
1
2
3
4
5
6
|
import React from "react";
export default class App extends React.Component {
render() {
return <h1>Hello, World!</h1>;
}
}
|
cs |
- React에서 이 두 가지 유형의 컴포넌트는 기능적으로 완전히 동일하게 동작
- 클래스 컴포넌트 : state 기능과 생명 주기 메소드를 사용 가능
- 함수 컴포넌트: state 기능과 생명 주기 메소드를 사용 불가 : Hook 사용시 문제 해결
(클래스 컴포넌트보다 선언하는 방법이 훨씬 간결하고, 메모리의 소비 또한 적음)
- React 공식 문서에서는 클래스 컴포넌트보다 함수 컴포넌트와 Hook의 사용을 권장
컴포넌트의 생성
- React 프로젝트의 src 폴더에 Greeting.js 파일을 생성
(컴포넌트의 이름을 대문자로 시작하도록 작성)
Greeting.js
1
2
3
4
5
6
7
8
9
10
|
function Greeting() {
return (
<>
<h1>React Component</h1>
<p>나의 첫 React 컴포넌트!</p>
</>
);
}
export default Greeting;
|
cs |
2. App.js 파일을 열고, 코드를 아래와 같이 변경
1
2
3
4
5
6
7
|
import Greeting from "./Greeting";
function App() {
return <Greeting />;
}
export default App;
|
cs |
- 사용자 정의 컴포넌트를 사용하는 이유: React.createElement() 메소드의 호출이나 JSX 구문으로 생성하는 Virtual DOM의 생성 코드를 사용자 정의 컴포넌트 쪽으로 이동시킴으로써 코드를 간결하게 만드는목적
'[React]' 카테고리의 다른 글
[React] export default (0) | 2023.09.05 |
---|---|
[React] export와 import (0) | 2023.09.04 |
[React] 엘리먼트(element) (17) | 2023.09.02 |
[React] JSX 문법 (12) | 2023.09.01 |
[React] JSX (JavaScript XML) (28) | 2023.08.30 |