우주먼지 개발 log
[TIL] 23/11/07 React 입문: 이벤트 핸들러( feat. 매개변수) 본문
[TIL] 23/11/07 React 입문: 이벤트 핸들러( feat. 매개변수)
개발자먼지 2023. 11. 8. 10:29한 일
스탠다드반 수업에서 한시간동안 개인과제 다시 구현하기 했는데
복붙을 잃으니까 뭔가 잘 안된다 ㅋㅋㅋ
하루종일 복습하고 튜터님 찾아가고
리액트 숙련 강의는 하나밖에 못봤다.
TIL
React 이벤트 핸들러 매개변수 주기
오늘 튜터님이랑 씨름하고 온 것 ~!
<button onClick = {이안에 들어가는 것은 이벤트 핸들러}>
이벤트핸들러는 event를 매개변수로 가질수 있고 안써도 된다. 개발자의 선택.
다른 매개변수를 주고싶을 경우
<button onClick = clickRemoveButtonHandler(item.id)> // 틀린코드
이렇게 써주면 안되는 이유는 저렇게 써주는 순간 함수 호출문이 되어서 함수 호출을 해버리는 것
onClick에는 함수의 주소가 아니라, 함수의 return 값이 들어가 버린다.
return 을 명시적으로 안하고 있다면 undefined 가 들어가게 된다.
완전히 이상한 코드.
올바른 코드로 고쳐보면
<button onClick = {() = > clickRemoveButtonHandler(item.id)}> // 바른코드
이 코드는 해석해보면 () => 사실은 이놈이 이벤트 핸들러가 된다.
clickRemoveButtonHandler(item.id) 를 리턴하는 무명의 화살표 함수를 onClick에 넣어주는 것이다.
화살표 함수를 풀어 써보면
onClick = {function () { return clickRemoveButtonHandler(item.id); }}
이 함수가 event 객체도 전달하고 싶다면
onClick = {function (e) { return clickRemoveButtonHandler(e, item.id); }}
다시 화살표로
onClick = {(e) =>{ clickRemoveButtonHandler(e, item.id) }
여기서 앞에 (e) 에 e를 빼먹으면 오류난다. e 는 이벤트 핸들러의 매개변수로서 새로 등장한 것이니까.
안써주면 뒤에서는 모른다!
매개 변수 없이 함수 이름만 전달할 경우
<input value ={name} onChange = {nameChangeHandler} />
그런데 이놈도 사실은 매개변수로 이벤트 객체를 받을 수 있으며 받고 있다.
nameChangeHandler 함수 정의로 가보면 event를 사용하고있음.
const nameChangeHandler = (event) => {
setName(event.target.value);
};
명시적으로 써보면
<input value ={name} onChange = {(e) => nameChangeHandler(e) } />
이렇게 써줘도 되지만 안써줘도 된다!
끝 (자주 쓸 것 같은 형식에만 굵게표시 해두었다)
할 일 / 부족한 점
연습만이 살길이다
타자를 자꾸 치자
숙련강의는 많이 치면서 들어야징
'TIL(Today I Learned) > 스파르타 내배캠' 카테고리의 다른 글
[TIL] 23/11/09 React 숙련: Redux 란? (0) | 2023.11.09 |
---|---|
[TIL] 23/11/08 React 숙련: useState 함수전달 (0) | 2023.11.08 |
[TIL] 23/11/06 React 입문: 개인과제 TodoList (0) | 2023.11.07 |
[TIL] 23/11/03 React 입문: jsx문법, inline style 적용 (0) | 2023.11.03 |
[TIL] 23/11/02 React 입문: 갑분 면접에 대한 고찰.. (0) | 2023.11.02 |