// 이벤트 핸들러(이벤트 리스너)
- 이벤트를 실행 및 처리하는 것
- 어떤 사건이 발생하면 사건을 처리한다.
<button onClick={함수명}>
- 이벤트 함수명은 handle+행위 또는 행위+handler로 짓는 것이 일반적이다.
~ handleClick, clickHandler ...
- 화살표 함수 또는 익명 함수로 이벤트 함수를 정의하여 커스텀 인자를 전달할 수 있다.
// 화살표 함수
<TabButton 이벤트핸들러명={() => 함수명(인자)}/>
//익명 함수
<TabButton 이벤트핸들러명={function() {함수명(인자)}}/>
- 클래스형 컴포넌트에서는 this를 직접 바인딩 해주거나 화살표 함수를 사용하여 바인딩해야 한다.
- 함수형 컴포넌트에서는 함수 안에 함수로 정의하거나 화살표 함수를 사용하여 정의한다.
// 클래스형 컴포넌트
- this 직접 바인딩
import React from 'react';
const styles = {
margin: {
margin: 20,
},
};
class EventHandler extends React.Component {
constructor(props) {
super(props);
this.state = {
isConfirmed: false,
};
}
handleConfirm = () => {
this.setState((prevState) => ({
isConfirmed: !prevState.isConfirmed,
}));
};
render() {
return (
<button
onClick={this.handleConfirm}
disabled={this.state.isConfirmed}
style={styles.margin}
>
{this.state.isConfirmed ? '확인 완료' : '확인 필요'}
</button>
);
}
}
export default EventHandler;
- 화살표 함수
import React from 'react';
const styles = {
margin: {
margin: 20,
},
};
class EventHandler extends React.Component {
constructor(props) {
super(props);
this.state = {
isConfirmed: false,
};
}
handleConfirm = () => {
this.setState((prevState) => ({
isConfirmed: !prevState.isConfirmed,
}));
};
render() {
return (
<button
onClick={this.handleConfirm}
disabled={this.state.isConfirmed}
style={styles.margin}
>
{this.state.isConfirmed ? '확인 완료' : '확인 필요'}
</button>
);
}
}
export default EventHandler;
// 함수형 컴포넌트
import { useState } from 'react';
const styles = {
margin: {
margin: 20,
},
};
function EventHandler(props) {
const [isConfirmed, setIsConfirmed] = useState(false);
const handleConfirm = () => {
setIsConfirmed((prevIsConfirmed) => !prevIsConfirmed);
};
return (
<button
onClick={handleConfirm}
disabled={isConfirmed}
style={styles.margin}
>
{isConfirmed ? '확인 완료' : '확인 필요'}
</button>
);
}
export default EventHandler;
'클라이언트 > React' 카테고리의 다른 글
[리액트(React)] 리스트(List) (0) | 2024.01.06 |
---|---|
[리액트(React)] 조건부 렌더링(Conditional Rendering) (0) | 2024.01.05 |
[리액트(React)] Hook (2) | 2024.01.03 |
[리액트(React)] State, Lifecycle (0) | 2024.01.02 |
[리액트(React)] Component, Props (1) | 2023.12.29 |