1. 이벤트 처리
- 컴퓨터 프로그래밍에서 이벤트는 사건이라는 의미를 가짐
1) DOM 이벤트 vs 리액트 이벤트
// DOM의 이벤트 처리
<button onclick="activate()">
Activate
</button>
- 이벤트의 이름(ex. onclick)을 소문자로 표기
- 이벤트를 처리할 함수를 문자열로 전달
// 리액트에서 이벤트 처리
<button onClick={activate}>
Activate
</button>
- 이벤트 이름을 카멜표기법으로 표기
- 이벤트를 처리할 함수 그대로 전달
2) 이벤트 핸들러(Event Handler)
- 어떤 이벤트가 발생했을 때 해당 이벤트를 처리하는 함수
- 이벤트 리스너(Event Listener)라고도 함(이벤트가 발생하는 것을 계속 듣고 있다는 의미)
- 클래스 컴포넌트: 클래스의 함수로 정의하고 생성자에서 바인딩하여 사용, 클래스 필드 문법도 사용 가능
- 함수 컴포넌트: 함수 안에 함수로 정의하거나 arrow function을 사용해서 정의
2. Arguments 전달
1) Argument
- 함수에 전달할 데이터
- 파라미터 또는 매개변수라고 부르기도 함
2) 클래스 컴포넌트
- arrow function 사용하기
import React from "react";
// 클래스 필드 문법 사용하여 작성
class ConfirmButton2 extends React.Component {
constructor(props) {
super(props);
// 확인(Confirm)여부를 저장하기 위해 state에 isConfirmed라는 변수를 하나 갖고 있고, 초기값은 false
this.state = {
// isConfirmed 라는 Boolean 변수
isConfirmed: false,
};
}
handleConfirm = () => {
this.setState((prevState) => ({
isConfirmed: !prevState.isConfirmed,
}));
}
render() {
return (
// 버튼을 클릭하면 handleConfirm() 호출
<button onClick={this.handleConfirm} disabled={this.state.isConfirmed}>
{this.state.isConfirmed ? "확인됨" : "확인하기"}
</button>
);
}
}
export default ConfirmButton2;
- Function.prototype.bind 사용하기
import React from "react";
// 클래스 컴포넌트로 작성
class ConfirmButton1 extends React.Component {
constructor(props) {
super(props);
// 확인(Confirm)여부를 저장하기 위해 state에 isConfirmed라는 변수를 하나 갖고 있고, 초기값은 false
this.state = {
// isConfirmed 라는 Boolean 변수
isConfirmed: false,
};
// callback에서 this를 사용하기 위해서 바인딩 필수
this.handleConfirm = this.handleConfirm.bind(this);
}
handleConfirm() {
this.setState((prevState) => ({
isConfirmed: !prevState.isConfirmed,
}));
}
render() {
return (
// 버튼을 클릭하면 handleConfirm() 호출
<button onClick={this.handleConfirm} disabled={this.state.isConfirmed}>
{this.state.isConfirmed ? "확인됨" : "확인하기"}
</button>
);
}
}
export default ConfirmButton1;
3) 함수 컴포넌트
- 이벤트 핸들러 호출 시 원하는 순서대로 매개변수를 넣어서 사용
import React, {useState} from "react";
// 함수 컴포넌트로 작성
function ConfirmButton3 (props) {
const[isConfirmed, setIsConfirmed] = useState(false);
const handleConfirm = () => {
setIsConfirmed((preIsConfirmed) => !preIsConfirmed);
};
return (
// 버튼을 클릭하면 handleConfirm() 호출
<button onClick={handleConfirm} disabled={isConfirmed}>
{isConfirmed ? "확인됨" : "확인하기"}
</button>
);
}
export default ConfirmButton3;
'Front-end > React' 카테고리의 다른 글
[React] 리스트(List)와 키(Key) (0) | 2023.05.14 |
---|---|
[React] 조건부 렌더링(Conditional Rendering) (0) | 2023.05.14 |
[React] 훅(Hook) (0) | 2023.05.11 |
[React] State와 생명주기(LifeCycle) (0) | 2023.05.10 |
[React] 컴포넌트(Component) (0) | 2023.05.09 |