태그 기능을 구현하고 있던 중 생긴 일이다.
우리 서비스의 태그는 input에 값을 입력하도 Enter나 ',' 키를 누르면 태그가 생성되도록 구현했다.
영어로 입력한 태그는 잘 작동하는 반면 한글로 입력한 태그는 태그가 두 개가 생성이 되었다.
예를 들어 '자바스크립트'라고 입력을 하면 '자바스크립트', '트' 다음과 같이 태그가 두개 생성되었다.
이 문제의 원인을 찾아본 결과 한글이 조합문자이기 때문에 생긴 것 같다.
한글은 자음과 모음을 조합하는 조합문자이고 영어는 조합문자가 아니다.
keyboardevent 내에서 isComposing이라는 것이 있는데 이것은 조합문자인이 아닌지를 판단한다고 한다.
태그가 두 개가 생성된 이유는 글자가 조합중인지, 조합이 끝난상태인지 파악하기 어렵기 때문에 js 내에서 어찌저찌 처리한 것 같다.
if (e.nativeEvent.isComposing) return;
다음 코드를 추가하면 한글 입력 시에도 한번만 실행되는 것을 확인할 수 있다.