ํ”„๋กœ์ ํŠธ

[keyDown, keyUp Event] ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๋ฌธ์ œ ํ•ด๊ฒฐ : e.nativeEvent.isComposing

Yuuuki 2024. 4. 24. 12:55

keyDown/keyUp ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ, ์˜์–ด๋Š” ๊ดœ์ฐฎ์ง€๋งŒ ํ•œ๊ตญ์–ด๋กœ ์ž…๋ ฅํ•˜๋ฉด ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. 

๐Ÿค” Why?

 

์ด ๋ฌธ์ œ๋Š” ํ•œ๊ธ€์˜ ์กฐํ•ฉํ˜• ์ž…๋ ฅ ๋ฐฉ์‹ ๋•Œ๋ฌธ์ด๋ผ๊ณ ํ•œ๋‹ค. ํ•œ๊ธ€ ์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ํ‚ค ์ž…๋ ฅ์ด ์กฐํ•ฉ๋˜์–ด ํ•˜๋‚˜์˜ ๊ธ€์ž๋ฅผ ์™„์„ฑํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์—, key Event๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‹œ์ ์—๋Š” ์ž…๋ ฅ์ด ์™„์ „ํžˆ ์™„์„ฑ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

e.nativeEvent.isComposing

 

 

์ด ์†์„ฑ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ…์ŠคํŠธ ์ž…๋ ฅ ์ค‘์— ๋ฌธ์ž ์กฐํ•ฉ(์˜ˆ: ํ•œ๊ธ€ ์ž์Œ๊ณผ ๋ชจ์Œ ์กฐํ•ฉ)์ด ์ง„ํ–‰ ์ค‘์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ‚ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ž…๋ ฅ์ด ์™„์„ฑ๋œ ์ƒํƒœ์ธ์ง€๋ฅผ ํ™•์ธํ•˜์—ฌ, ์ž…๋ ฅ์˜ ์™„์„ฑ์ด ๋œ ๊ฒฝ์šฐ์—๋งŒ ๊ฒ€์ƒ‰์ฒ˜๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค.

  const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (e) => {
    if (isVisible && e.key === "Enter" && !e.nativeEvent.isComposing) {
      handleSearch();
    }
  };

 

isComposing์ด false์—ฌ์•ผ ์ž…๋ ฅ์ด ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ, !e.nativeEvent.isComposing ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ๊ฐ€๋Šฅํ•˜๋‹ค.