e.currentTarget 에러

Warning: This synthetic event is reused for performance reasons. If you're seeing this, you're accessing the method currentTarget on a released/nullified synthetic event. This is a no-op function. If you must keep the original synthetic event around, use event.persist(). See https://fb.me/react-event-pooling for more information.

Uncaught (in promise) TypeError: e.currentTarget.getAttribute is not a function
at Puzzle._callee2$ (puzzle.js:202)
at tryCatch (runtime.js:62)
at Generator.invoke
as _invoke
at Generator.prototype.(anonymous function)
as next
at asyncGeneratorStep (main.js:637)
at _next (main.js:637)

Story

  1. 버튼을 누른다
  2. 서버에 POST메세지를 보내서 포인트를 체크한다
  3. 201을 응답받았으면 e.currentTarget에 접근한다

원인

let pointCheckResult = await this.checkPoint();
console.log( 'pointCheckResult : ', pointCheckResult );

let boxNumber = parseInt(e.currentTarget.getAttribute('data-number'));

this.checkPoint()를 지우면 잘 작동하는데, 저게 있으면 제대로 작동하지 않는다. 내 생각에는 비동기 통신을 하는동안 브라우저가 기다려야 하는데, 그 사이에 저 e가 가리키는 대상이 DOM에 계속 있으리란 보장이 없으니까 저렇게 쓰지 말라는 의미같다.

해결방안

this.checkPoint()를 더 아래쪽에서 사용한다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Up Next:

[OS 1-2] 운영체제 역사

[OS 1-2] 운영체제 역사