본문 바로가기
카테고리 없음

6. React Hooks

by bammbii 2024. 6. 1.

[ React Hooks ] 

클래스 컴포넌트의 기능을 함수 컴포넌트에서도 이용할 수 있도록 도와주는 메서드들

 

useState : State 기능을 낚아채오는 Hook

useRef : Reference 기능을 낚아채오는 Hook

등등의 다양한 훅이 존재함 

 

< 특징 >

● 함수 컴포넌트 내부에서만 호출 가능

조건문, 반복문 내부에서는 호출 불가 ( 서로다른 훅들의 호출 순서가 엉망이 되는 경우도 발생 )

나만의 Hook도 제작 가능 (Custom Hook)

 

 

import { useState } from "react";

// 3가지 hook 관련 팁
// 1. 함수 컴포넌트, 커스텀 훅 내부에서만 호출 가능
// 2. 조건부로 호출될 수는 없다
// 3. 나만의 훅(Custom Hook) 직접 만들 수 있다

const HookExam = () => { 
    const [input, setInput] = useState(); 

    const onChange = (e) => {
        setInput(e.target.value);
    }

    return (
        <div>
            <input value={input} onChange={onChange} />
        </div>
    )
};

export default HookExam;

 

여기서 보면 input을 관리하는 코드가 너무 길다.

늘어날수록 중복 코드가 더 많아지기 때문에 별도의 함수로 만들면 훨씬 깔끔해질 것 같음

 

hooks/useInput.jsx 파일을 만들어서 아래 코드 작성

import { useState } from "react";

function useInput(){
    const [input, setInput] = useState("");

    const onChange = (e) => {
        setInput(e.target.value);
    };

    return [input, onChange];
}

export default useInput;

 

함수 앞에 use~를 붙여서 만들면 Custom Hook을 만들 수 있고

컴포넌트 내부에 훅을 사용해서 반복되는 로직을 분리할 수 있다.

 

그리고 HookExam.jsx에는 

import useInput from "../hooks/useInput";

// 3가지 hook 관련 팁
// 1. 함수 컴포넌트, 커스텀 훅 내부에서만 호출 가능
// 2. 조건부로 호출될 수는 없다
// 3. 나만의 훅(Custom Hook) 직접 만들 수 있다

const HookExam = () => { 
    const [input, onChange] = useInput(); 
    const [input2, onChange2] = useInput();

    return (
        <div>
            <input value={input} onChange={onChange} />
            <input value={input2} onChange={onChange2} />
        </div>
    )
};

export default HookExam;

 

물론 Custom Hook은 여러번 반복해서 사용할 수 있다.