반응형
이번 글에서는 React와 Tailwind CSS를 사용해서 간단한 애니메이션과 상태 관리를 구현하는 방법을 알아보겠습니다.
본격적인 설명에 앞서 다음 두 가지 용어를 정리하고 넘어가겠습니다.
- useState : 컴포넌트 내에서 동적인 값을 저장하고 업데이트할 수 있게 해주는 React의 훅(Hook) 입니다.
- Tailwind CSS: Tailwind CSS는 클래스 이름만으로 다양한 스타일을 쉽게 적용할 수 있게 도와주는 도구예요. 이번 글에서는 상태에 따라 다른 CSS 애니메이션과 스타일을 적용합니다.
구현 예제 코드
아래는 사용자가 텍스트를 입력하고 엔터 키를 누르면, 입력란이 화면 위쪽으로 이동하면서 더 이상 수정할 수 없게 되는 예제 코드입니다.
import { useState } from "react";
export default function SearchBar() {
// 상태를 관리하는 useState 훅을 사용합니다.
const [isSubmitted, setIsSubmitted] = useState(false);
// 엔터 키를 감지하는 함수입니다.
const handleKeyPress = (event) => {
if (event.key === "Enter") {
setIsSubmitted(true); // 엔터 키가 눌리면 상태를 true로 변경합니다.
}
};
return (
<div className="w-screen h-screen flex items-center justify-center">
<div
className={`max-w-[320px] w-full text-center absolute transform ${
isSubmitted ? "top-32" : "top-1/2 translate-y-[-50%]"
} transition-all duration-1000 ease-in-out`}
>
<input
type="text"
className={`w-full text-3xl pb-2 text-gray-900 border-b-2 border-gray-900 text-center focus:outline-none ${
isSubmitted ? "bg-transparent text-gray-900 cursor-default" : ""
}`}
placeholder="찾을 단어를 입력해주세요"
onKeyPress={handleKeyPress}
disabled={isSubmitted} // 상태가 true일 때 입력란을 비활성화합니다.
/>
</div>
</div>
);
}
코드 설명
- 상태 관리 (
useState
):useState
훅을 사용해isSubmitted
상태를 관리합니다. 처음에는false
로 설정되고, 엔터 키를 누르면true
로 변경됩니다. - 엔터 키 감지 (
handleKeyPress
): 사용자가 입력란에 글을 입력하고 엔터 키를 누르면isSubmitted
상태가true
로 변경됩니다. - 조건부 클래스 적용: 상태에 따라 CSS 클래스를 다르게 적용합니다. 입력란이 위로 이동하는 애니메이션과 함께 input 입력란을 비활성화합니다. 예제 코드에서는 삼항 연산자를 이용하여 표현했어요.
- 애니메이션과 스타일 적용: Tailwind CSS의
transition-all
과duration-1000
클래스를 사용해 애니메이션을 부드럽게 만들고, 입력란이 비활성화될 때 배경색이 바뀌지 않도록 bg-transparent 를 추가로 설정했습니다.
마무리
예제를 통해 React의 상태 관리와 Tailwind CSS를 사용한 애니메이션 적용 방법을 간단하게 구현해보았습니다. 특별한 기술이 없더라도 이렇듯 웹 페이지에 다양한 인터랙티브 요소를 쉽게 추가할 수 있습니다. 직접 코드를 작성해보면서 연습해보세요 :)
반응형
'나는 이렇게 학습한다 > Frontend' 카테고리의 다른 글
TypeScript 타입 종류 한 번에 정리 (0) | 2024.08.06 |
---|---|
React 의 useEffect 를 쉽게 이해해보자! (0) | 2024.08.06 |
React Query의 useMutation 구현 예시와 콜백 활용법 (2) | 2024.08.04 |
React Query의 useQuery를 활용한 데이터 조회 및 상태 관리 (0) | 2024.08.03 |
JavaScript 구조분해 할당으로 함수 매개변수 다루기 (0) | 2024.08.02 |