벨로그 클론코딩 주차에서 회원가입 부분에 사용자가 input 태그에 커서를 올렸다는 것이 감지가 되면 아래와 같이 색상이 초록색으로 변경되도록 구현하고 싶어서 해당 구현 방법을 알아보았다.
<input onFocus={() => console.log('input focus')}
<input onBlur={() => console.log('outside focus')}
// src/hooks/useChange.js
import { useState } from "react";
const useChange = () => {
const [isChange, setChange] = useState(false);
const handler = () => {
setIsModal(!isChange);
};
return [isChange, handler];
};
export default useChange;
// src/components/register/Register.jsx
import useChange from "../../hooks/useChange";
// 커서 이벤트
const [isFocusEmail, onChangeIsFocusEmail] = useChange();
return (
<Contents>
{isFocusEmail ? (
<Label fontColor="#20C997">이메일</Label>
) : (
<Label>이메일</Label>
)}
<InputWrapper>
<Input
name="email"
defaultValue={state}
disabled
onFocus={() => onChangeIsFocusEmail()}
onBlur={() => onChangeIsFocusEmail()}
/>
</InputWrapper>
</Contents>
)