인프런 커뮤니티 질문&답변
이벤트 위임이 되는 것 같은데 될 이유가 없어보입니다
작성
·
249
0
이 코드에 있는 input에서 입력하고 엔터를 입력하면 이벤트 위임이 되는 듯 등록이 두번됩니다. 그래서 e.stopPropagation(); 를 이용하여 해결하려 했는데 여전히 입력이 두번씩 됩니다.. 이게 제일 최하위 컴포넌트인데 도저히 에러를 못잡겠어서 질문드립니다. 심지어 e.target.value=""로 마지막에 입력값을 지우는 코드를 집어넣으면 첫 입력이 하크 였으면 뒤에글자인 크가 한번 더 입력됩니다. (첫번쨰 입력: 하크 두번쨰 입력: 크) 대체 왜이러는걸까요..?? 항상 답변 잘 해주셔서 감사합니다 제로초님
답변 1
0
음, 해당 태그가 form 태그 안에 있나요? 또한 키보드를 입력할 때 onKeyDown이나 이런 게 두 번씩 실행되나요? input을 저렇게 쓰는 방식은 제가 익숙한 방식이 아니라서 잘 모르겠습니다. 저는 value랑 onChange를 state 연결하는 controlled 방식만 써서요.
value랑 onChange를 쓰면 값이 state에 등록되니까, onKeyDown에서는 그 state를 쓰시고 e.target.value를 쓰지 마세요.
그리고 혹시 enter 입력할 때 form의 onSubmit도 실행되는건 아니죠?
그리고 혹시 enter 입력할 때 form의 onSubmit도 실행되는건 아니죠?
e.preventDefault()로 막아놓았습니다. 혹시 이게 문제를 발생시킬 수 있나요?
value랑 onChange를 쓰면 값이 state에 등록되니까, onKeyDown에서는 그 state를 쓰시고 e.target.value를 쓰지 마세요.
이렇게 해보겠습니다
value랑 onChange를 쓰면 값이 state에 등록되니까, onKeyDown에서는 그 state를 쓰시고 e.target.value를 쓰지 마세요.
이렇게 해도 두번씩 입력되는 문제는 반복됩니다. 상위 컴퍼넌트에서 props로 주는 onChange를 onKeydown에서 쓰고 있는데 이걸로 문제가 발생할수도 있을까요?
e.preventDefault()로 막는게 맞는 것 같습니다.
혹시 맥 같은 거 쓰시나요? 한글 입력 관련 버그는 아니죠? onKeyDown 떼어내고 value랑 onChange만 있을 때는 두번씩 입력도는 현상이 나타나나요?
맥쓰고 있긴합니당
아뇨 onkeydown없으면 안나타납니다!
의심되는 건 currntvalue를 지웠을 때는 뒤에문자하나만 두번째로 입력되는건데 value가 맘대로 의도한바와 다르게 움직이는 것 같습니다





네 form 태그 안에 있습니다. 키보드를 입력할떄는 onkeydown이벤트밖에 실행이 안됩니다..
저도 제로초님이 말씀하신 value랑 onchange를 컨트롤하는 방식이 편한데 엔터키를 이용한 이벤트를 주고 싶은데 그냥 onChange에서 입력키를 다루는 게 좋을까요?