728x90
300x250
SMALL
같은 예제를 가지고 클래스 컴포넌트에서 bind 사용 방식과, 클래스 필드 문법 사용, 함수형 컴포넌트 사용 방식을 비교해 보자
1. 클래스 컴포넌트 - 생성자에 bind 사용
import React, { Component } from 'react';
class MyComponent extends Component {
constructor(props) {
super(props);
// 생성자에서 bind로 this 바인딩
this.state = { count: 0 };
this.handleClick = this.handleClick.bind(this); // bind로 this를 바인딩
}
handleClick() {
this.setState({ count: this.state.count + 1 });
}
render() {
return (
<div>
<button onClick={this.handleClick}>Click Me</button>
<p>Count: {this.state.count}</p>
</div>
);
}
}
export default MyComponent;
2. 클래스 필드 문법
import React, { Component } from 'react';
class MyComponent extends Component {
state = { count: 0 };
// 클래스 필드 문법으로 화살표 함수 메서드 정의
handleClick = () => {
this.setState({ count: this.state.count + 1 });
};
render() {
return (
<div>
<button onClick={this.handleClick}>Click Me</button>
<p>Count: {this.state.count}</p>
</div>
);
}
}
export default MyComponent;
여기서는 handleClick 메서드가 클래스 필드로 정의되어, 화살표 함수를 사용하여 this가 자동으로 바인딩 된다.
3. 함수형 컴포넌트
함수형 컴포넌트에서는 this가 필요 없고 대신 상태는 useState 훅을 사용하여 관리한다.
import React, { useState } from 'react';
const MyComponent = () => {
const [count, setCount] = useState(0);
const handleClick = () => {
setCount(count + 1);
};
return (
<div>
<button onClick={handleClick}>Click Me</button>
<p>Count: {count}</p>
</div>
);
};
export default MyComponent;
handleClick 메서드는 일반 함수로 선언되며, this와 바인딩할 필요가 없다.
728x90
반응형
LIST
'Front-end > React' 카테고리의 다른 글
리액트에서 Arguments (매개변수) 전달하기 (1) | 2024.12.26 |
---|---|
함수형 컴포넌트에서 이벤트 핸들러 정의하기 (0) | 2024.12.25 |
클래스 필드 문법과 화살표 함수의 차이 (0) | 2024.12.23 |
클래스 필드 문법이란? (0) | 2024.12.22 |
리액트에서 이벤트 처리하기 (0) | 2024.12.21 |
댓글