yamoo9 / likelion-FEQA

질문/답변 — 프론트엔드 스쿨, 멋사
29 stars 9 forks source link

[LAB-9] 버튼 선택시 값을 불러오려고 하는데 포함된 다른 엘리먼트들 때문에 접근이 안됩니다. #180

Closed qorbaxk closed 1 year ago

qorbaxk commented 1 year ago

질문 작성자

백승연

문제 상황

프로젝트 저장소 URL

환경 정보

yamoo9 commented 1 year ago

접근 권한

@qorbaxk 님. Firestore에 접근할 수 있는 권한(.env 파일 없음)이 없어 질문과 동일한 상황을 구현할 수 없습니다.

문제 원인

e.target은 이벤트가 전파(발생)된 대상을 가리킵니다. 버튼에 연결된 이벤트는 내부의 요소로 전파 되므로 질문과 같은 상황에서 버튼을 가리키지 않는 것입니다.

문제 해결

이벤트가 직접 연결된 대상은 e.currentTarget을 사용합니다.

currentTarget 인터페이스 의 읽기 전용 속성은 이벤트(Event)가 DOM을 통과(전파)할 때 이벤트의 현재 대상(current target)을 가리킵니다. 이는 항상 이벤트 핸들러가 첨부된 요소를 참조 하며, Event.target 이벤트가 발생한 요소를 식별하고 그 자손이 될 수 있는 요소를 식별합니다.

onFocusPet 함수를 아래와 같이 수정한 후 확인해보세요.

const onFocusPet = (e: React.MouseEvent<HTMLButtonElement>) => {
  // e.currrentTarget은 이벤트를 직접 연결한 <button> 요소를 가리킴
  console.log(e.currentTarget)
}