다음과 같이 코드가 중복되는 경우에는 커스텀 훅을 활용해 중복을 제거할 수 있다.
const [email, setEmail] = useState('');
const [nickname, setNickname] = useState('');
const onChangeEmail = useCallback((e) => {
setEmail(e.target.value);
}, []);
const onChangeNickname = useCallback((e) => {
setNickname(e.target.value);
}, []);
hooks 폴더 안에 useInput이라는 커스텀 훅을 만들어 중복을 제거해보자
import { useCallback, useState } from "react";
const useInput = (initialData)=> {
const [value, setValue] = useState(initialData)
const handler = useCallback((e)=>{
setValue(e.target.value);
}, [])
return [value, handler, setValue]
}
export default useInput;
이렇게 커스텀훅을 만들어 준 후, 기존 중복됐던 코드를 변경해주자!
기존 코드
const [email, setEmail] = useState('');
const [nickname, setNickname] = useState('');
>
const onChangeEmail = useCallback((e) => {
setEmail(e.target.value);
}, []);
const onChangeNickname = useCallback((e) => {
setNickname(e.target.value);
}, []);
커스텀 훅 적용 후
import useInput from "@hook/useInput" // 커스텀 훅 파일 경로
const [email, onchangeEmail, setEmail] = useInput('');
const [nickname, onChangeNickname, setNickname] = useInput('');
나의 경우는 setEmail과 setNickname가 필요없어서 아래처럼 적어 작업했다.
const [email, onchangeEmail] = useInput('');