key, keyCode, 그리고 code는 브라우저에서 키보드 이벤트를 처리할 때 사용되는 속성입니다.
사용자가 누른 키의 "값"을 나타냄.
document.addEventListener('keydown', (event) => {
console.log(event.key); // 'a', 'A', '1', 'Enter', etc.
});
key는 한글 입력시 Process가 출력됩니다.
const keydown = (e: React.KeyboardEvent<HTMLInputElement>) => {
console.log(e.key);
if (e.key === "Enter") {
e.preventDefault();
addClickHandler();
}
};
한글은 조합문자이기 때문에 한글을 입력하고 e.key를 출력해보면 Process가 출력되고
그 상태에서 Enter를 입력하면 Process가 한번 더 출력된 후, Enter가 입력됩니다.
mac에서는 list가 두 번 생성되는 이슈도 있습니다.

이를 막기 위해 다음과 같이 코드를 수정해줍니다.
const keydown = (e: React.KeyboardEvent<HTMLInputElement>) => {
if (e.nativeEvent.isComposing) return;
console.log(e.key);
if (e.key === "Enter") {
e.preventDefault();
addClickHandler();
}
};
e.nativeEvent.isComposing 속성을 사용해 한글 입력 중인지 확인하고, 한글 입력 중에는 keydown 이벤트를 처리하지 않는 방식입니다.
이 방식은 IME(입력기) 사용 시 발생할 수 있는 문제를 해결합니다.

Process가 두 번 출력되는 현상이 해결되었습니다.
키보드의 물리적 위치에 해당하는 문자열을 반환.
document.addEventListener('keydown', (event) => {
console.log(event.code); // 'KeyA', 'Enter', 'ArrowUp', etc.
});
사용자가 누른 키에 대응하는 고유 숫자 값(Deprecated).
document.addEventListener('keydown', (event) => {
console.log(event.keyCode); // 숫자 값: 65 (A), 13 (Enter), etc.
});