클래스란 쉽게 말하면 물건을 만드는 설명서라고 할 수 있다.
class 안에는 함수와 변수를 넣을 수 있는데, 예를 들어 붕어빵과 몬스터를 만들었다면 붕어빵과 몬스터는 객체 또는 인스턴스라고 부른다.
요즘엔 클래스형 컴포넌트보다 함수형 컴포넌트를 많이 쓰고 있는 추세지만 아직까지 클래스를 사용하고 있는 기업들이 있기 때문에 숙지는 하고 있어야 한다!
extends
를 통해 상속해 줄 수 있다.return
대신 화면에 그림그려줘!' 라고 의미하는 render
를 사용한다! render
에는 html을 리턴해주는 코드를 작성하면 됨!import { Component } from "react";
export default class ClassCounterPage extends Component {
state = {
count: 0,
};
onClickCountUp = () => {
// 화살표 함수도 가능! (function만 안쓰면 됨)
console.log(this.state.count);
this.setState({
count: 1,
});
};
render() {
return (
<>
<div>{this.state.count}</div>
<button onClick={this.onClickCountUp}>카운트 올리기!!</button>
</>
);
}
}
this는 어디서 실행하냐에 따라서 변화하는 이슈가 있다. 즉, 실행하는 주체에 따라서 this가 다르게 나온다.
이렇게 바뀌는 this를 동적 this라고 한다. 따라서 onClickCouter 를 클릭시에 this가 onClickCouter로 바뀌게 된다.
변화하는 this를 class로 고정
하기 위해서는 this를 바인딩
해주시거나 화살표 함수
를 써주어야한다.
이렇게 바인딩 과정을 거쳐서 고정된 this를 렉시컬 this라고 한다!!
import React from "react";
import "./App.css";
const NameBox = () => {
const name = "test";
return <div>{name}</div>;
};
export default NameBox;
클래스형 컴포넌트에서는
state
를 사용할 수 있고lifecycle
및 메서드를 이용하여 컴포넌트가mount
혹은unmount
될 때 추가 작업을 수행시키는 등 여러 조작을 할 수 있었다. 하지만Hook
이 등장한 이후부터는 위 기능들을 함수형 컴포넌트에서도 대부분 구현이 가능하게 되었다!