IT/React
클래스형 컴포넌트
봉즙
2019. 10. 27. 21:47
컴포넌트 : 함수형, 클래스형 컴포넌트 2가지 존재
클래스형 컴포넌트
클래스형 컴포넌트와 함수형 컴포넌트의 역할은 같다.
클래스형 컴포넌트의 경후 state 기능 및 라이프 사이클 기능과 임의 메서드를 정의 할 수 있다.
반드시 render 함수가 필요하며, 그안에서 보여주어야 할 JSX를 반환 해주어야 한다.
함수형 컴포넌트
장점
- 클래스형 컴포넌트보다 선언하기 편하다.
- 메모리 자원을 클래스형 컴포넌트에 비해 덜 사용한다.
- 프로젝트 완성하여 빌드 후 배포시에도 함수형컴포넌트를 사용하는 것이 파일 크기가 더 작다.
(함수형 컴포넌트와 클래스형 컴포넌트는 성능과 파일 크기 면서에 사실상 별 차이가 없다.)
단점
- state와 라이프 사이클 API의 사용이 불가능 하다.
(v16.8 이후 Hooks를 통해 조금 다른 방식으로 비슷한 작업을 할 수 있다.)
※리액트 공식 메뉴얼은 컴포넌트를 새로 작성할 때 함수형 컴포넌트와 Hooks를 사용하는 것을 권장한다.
※ ES6 클래스
class Dog {
constructor(name) {
this.name = name;
}
say() {
console.log(this.name + ': 멍멍');
}
}
const dog = new Dog('흰둥이');
dog.say(); //흰둥이: 멍멍
※ ES6 화살표 함수
function을 이용함 함수 선언 방식을 아예 대체하는 것은 아니며, 사용 용도가 다르다.
주로 함수를 파라미터로 전달할 때 유용하다.
setTimeOut(function() {
console.log('hello world');
}, 1000);
setTimeOut(() => {
console.log('hello world');
}, 1000);
function BlackDog() {
this.name = '흰둥이';
return {
name : '검둥이',
bark : function() {
console.log(this.name + " : 멍멍!");
}
}
}
const blackDog = new BlackDog();
blackDog.bark();//검둥이 : 멍멍!
function WhiteDog() {
this.name = '흰둥이';
return {
name : '검둥이',
bark : () => {
console.log(this.name + " : 멍멍!");
}
}
}
const whiteDog = new WhiteDog();
whiteDog.bark();//흰둥이 : 멍멍!
일반 함수는 자신이 종속된 객체를 this로 가리키며, 화살표 함수는 자신이 종속된 인스턴스를 가리킨다.
화살표 함수는 값을 연산하여 바로 반환해야 할 때 사용하면 가독성을 높일 수 있다.
function twice(value) {
return value * 2;
}
const triple = (value) => value * 3;
따로 { }를 열어주지 않으면 연산한 값을 그대로 반환한다는 의미