일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Supabase
- JavaScript
- 연산자
- 코딩독학
- 프론트엔드
- HTML
- 생활코딩
- 정보처리기사
- 비전공자
- 리액트
- react
- web
- 세로메뉴바
- 슬라이드전환
- github
- PROJECT
- 웹디자인기능사
- git
- 자바스크립트
- 실기
- 타입스크립트
- 웹퍼블리셔
- 코드공유
- JS
- 렛츠기릿자바스크립트
- jQuery
- 웹디자인기능사실기
- 웹디실기
- CSS
- 깃
Archives
- Today
- Total
코딩하는라민
[React] 이벤트 처리하기 본문
728x90
반응형
[React] 이벤트 처리하기
📌 이벤트 처리하기
DOM 엘리먼트에서 이벤트를 처리하는 방식과 유사하다.
✅ 이벤트명은 카멜 케이스를 사용
이벤트 핸들러는 문자열이 아닌 함수로 전달한다.
<h1 onClick={Hello}>
Hello React
</h1>
✅ false 를 반환해도 기본 동작을 방지할 수 없다.
<button onClick={alert('hello'); return false}>
welcome to my blog
</button>
따라서 이벤트의 기본 동작을 방지하기 위해 preventDefault 를 사용해야한다.
function hello(e){
e.preventDefault();
alert('Hello');
}
<button onClick={hello}>
welcome to my blog
</button>
✅ 엘리먼트가 생성된 후에는 addEventListener를 호출할 필요가 없다.
엘리먼트가 처음 렌더링될 때 addEventListener를 제공하면 된다.
📌 클래스 컴포넌트 사용 시, this
this 는 render 함수와 constructor 함수에서만 사용할 수 있다.
콜백함수에서 this를 사용하려면 constructor 내부에서 this 를 핸들러 함수에 바인딩 해줘야한다.
class Home extends React.Component{
constructor(props){
super(props);
this.state = {
isToggle: true,
}
this.hadler = this.handler.bind(this);
}
hander() {
this.setState(prev=>({
isToggle: !prev.isToggle
}));
}
render(){
<button onClick={this.hander}>
{this.state.isToggle ? 'Sleep' : 'Study'}
</button>
}
}
클래스 메서드는 기본적으로 this 가 바인딩되어있지 않다.
this 를 바인딩하지 않았을 때, this 는 undefined 가 된다.
✅ 만약 클래스필드 문법을 사용하고 있지 않다면?
콜백함수에 화살표 함수를 사용하면된다.
class Home extends React.Component{
hander() {
alert('Good!')
}
render(){
<button onClick={()=> this.hander()}>
GO Sleep
</button>
}
}
또는 콜백함수에 직접 화살표 함수를 사용
class Home extends React.Component{
hander = () => {
alert('Good!')
}
render(){
<button onClick={this.hander()}>
GO Sleep
</button>
}
}
참고 : MDN 문서, 리액트 공식 문서
등을 공부하고, 간단하게 정리한 내용입니다. 잘못된 부분이나 문제되는 점이 있으면 댓글 부탁드립니다.
728x90
반응형
'Core > React' 카테고리의 다른 글
[React] 조건부 렌더링 (0) | 2023.02.25 |
---|---|
[React] state 와 setState() - 클래스형 컴포넌트 (0) | 2023.02.25 |
[React] 컴포넌트(Component)와 Props (1) | 2023.02.22 |
[React] JSX 이해하기 (0) | 2023.02.22 |
[React] 리액트(React) 시작하기 / JSX와 create-react-app (1) | 2023.02.21 |