반응형
아래와 같은 코드에서 onClick이벤트가 li태그에 위임되어서 li태그를 클릭하기만 해도 onClick이벤트가 실행되었다.
아래 움짤을 보자.
<div onClick={handleDeleteButtonClick}>
..(생략)..
<ul>
{options.map((option, idx) => (
<li key={idx} onClick={() => handleDropDownClick(option)} className={selected === idx ? "selected" : ""}>
{option}
</li>}
</ul>
..(생략)..
</div>
보다시피 <li>태그를 클릭만해도 onClick이 실행되어 delete되고 있다.
아래 움짤은 onClick이벤트가 실행되는 태그를 조정한 후 결과이다.
<div className="autocomplete-wrapper" onKeyUp={handleKeyUp} onClick={(e) => e.preventDefault()}>
<i className="fas fa-times" onClick={handleDeleteButtonClick}></i>
<ul>
{
options.map((option, idx) => (
<li key={idx} onClick={() => handleDropDownClick(option)} className={selected === idx ? "selected" : ""}>
{option}
</li>
))}
</ul>
}
</div>
면접준비를 하면서 이벤트 위임 개념을 알게되어서 해결할 수 있었다.
이래서 기술면접을 그렇게 물어보는듯
반응형
'프로젝트 > 코드스테이츠 - 4주프로젝트' 카테고리의 다른 글
리팩토링 : 해시태그를 작성하는 input태그에서 엔터누르면 새로고침되던문제 (0) | 2022.01.09 |
---|---|
리팩토링 : 카카오지도 DOM은 리렌더링 안시키고 마커만 리렌더링시키는 방법 (0) | 2022.01.07 |
리팩토링 : 지도 위주의 UI로 변경 (0) | 2022.01.05 |
리팩토링 : useResetRecoilState 이용하여 지도 클릭시 지역검색창 초기화되도록 함 (0) | 2022.01.03 |
위치기반시스템 flow (0) | 2022.01.03 |