isComposing 속성을 이용하여 입력 중 상태 감지하기isComposingisComposing 속성React 입력 상태 감지React input

isComposing 속성을 이용하여 입력 중 상태 감지하기

KUKJIN LEE
KUKJIN LEE
2024년 5월 8일
367

키보드 입력은 웹과 앱 개발에서 흔히 볼 수 있는 사용자 상호작용 중 하나입니다. 사용자가 입력을 완료했는지 아니면 여전히 작성 중인지를 판단하는 것은 사용자 경험을 향상시키는 데 중요한 역할을 합니다. isComposing속성을 활용하면 사용자의 입력 상태를 감지할 수 있습니다.

 

isComposing 속성이란?

isComposingEvent 객체의 속성 중 하나로, 사용자가 입력 과정 중인지 아닌지를 나타내는 불리언(Boolean) 값입니다. 이 속성은 주로 input 이벤트와 같이 키보드 입력을 다룰 때 유용하게 사용됩니다. 특히, IME(Input Method Editor)를 사용하여 글자를 조합하는 언어(예: 한국어, 일본어, 중국어 등)의 입력 처리에 매우 중요합니다.

 

import { useState } from 'react';
export default function Home() {
  const [isComposing, setIsComposing] = useState(false);
  const handleComposition = (event) => {
    if (event.type === 'compositionstart') {
      setIsComposing(true);
    } else if (event.type === 'compositionend') {
      setIsComposing(false);
    }
  };
  return (
    <div className="flex justify-center items-center h-screen">
      <input
        type="text"
        className={`p-2 text-lg border-2 ${isComposing ? 'border-blue-500' : 'border-gray-300'} transition-colors duration-300`}
        onCompositionStart={handleComposition}
        onCompositionEnd={handleComposition}
        placeholder="여기에 입력하세요..."
      />
    </div>
  );
}

 

코드에서는 useState 훅을 사용하여 isComposing 상태를 관리합니다. 사용자가 입력을 시작하면 (compositionstart 이벤트), isComposing 상태를 true로 설정하여 입력 필드의 테두리 색상이 파란색으로 변경됩니다. 입력이 완료되면 (compositionend 이벤트), isComposing 상태를 false로 변경하여 테두리 색상이 기본 회색으로 돌아갑니다.

이 예시는 입력 중인 상태를 시각적으로 강조하여 사용자 경험을 향상시키는 좋은 방법을 제시합니다.

관련 글

TypeScript any 린트 에러(no-explicit-any) 근본적으로 해결하기

TypeScript 프로젝트에서 @typescript-eslint/no-explicit-any 린트 에러는 단순 규칙 비활성화로 해결할 문제가 아닙니다. 눈 앞 문제는 해결할 수 있지만, TypeScript를 사용하는 가장 중요한 이유를 위배하게 됩니다. any 타입은...

2025년 7월 23일269

JSP 주석, 아직도 `` 쓰시나요? 올바른 사용법

코드를 작성하다 보면 주석을 남기는 경우가 많습니다. 하지만 JSP 환경에서 어떤 주석을 사용하냐에 따라 보안 수준과 성능 이 크게 달라집니다. 표준 주석: 서버 사이드 주석 &lt;%-- --%&gt; JSP 페이지 내 개발 관련 주석은 &lt;%-- --%&gt; 를 사용하는게 좋습니다...

2025년 7월 9일144

쉽게 만드는 React Tab 라이브러리 react-tabs

개발자가 커스텀 스타일을 쉽게 적용할 수 있도록 최소한의 스타일만 제공하여 유연한 스타일링 이 가능한 라이브러리입니다. 상태 관리가 내장되어 있어 탭 선택 및 패널 표시 로직을 직접 구현할 필요 없이 간편하게 사용할 수 있습니다. 기본 사용법 먼저, 라이브러리를 설치합...

2025년 6월 17일173

Next.js 환경 변수 NEXT_PUBLIC 접두사 역할

NEXT_PUBLIC 접두사를 붙이면 변수의 접근 범위가 완전히 달라집니다. 이 차이점을 이해하는 것이 안전하고 효율적인 Next.js 애플리케이션을 구축하는 데 중요합니다. NEXT_PUBLIC 접두사가 없는 환경 변수 (서버 전용) NEXT_PUBLIC 접두사 없이...

2025년 6월 13일156