쿠키린 2025. 6. 10. 00:14

마이크로 상태 관리를 위해서는 리액트 훅이 필수다.

리액트 훅에는 다음과 같이 상태 관리 방법을 구현하기 위한 몇 가지 기본 리액트 훅이 포함돼 있다.

 

■useState 훅은 지역 상태를 생성하는 기본적인 함수로, 로직을 캡슐화하고 재사용 가능하다는 리액트 훅의 특징이 있다.

그래서 useState를 기반으로 다양한 사용자 정의 훅을 만들 수 있다.

 

■ useReducer 훅도 지역 상태를 생성할 수 있으며, useState를 대체하는 용도로 자주 사용된다.

useState와 useReducer 훅을 다시 살표보고 유사점과 차이점을 알아두자.

 

■ useEffect 훅을 이용하면 리액트 렌더링 프로세스 바깥에서 로직을 실행할 수 있다.

특히 전역 상태를 다루기 위한 상태 관리 라이브러리를 개발할 때 중요한데, 그 이유는 리액트 컴포넌트 생명 주기와

함께 작동하는 기능을 구현할 수 있기 때문이다.

 

const useCount = () => {
	const [count, setCount] = useState(0);
	return [count, setCount];

 }
function useComponent() {

        const [count, setCount] = useCount();

    return(
        <div>
            {count}
            <button onClick={() => setCount((C)=> C+1)}>+1</button>
        </div>
    )

}

 

■ useCount라는 이름을 통해 더 명확해졌다. <-- 로직 추출

useComponent가 useCount 구현과 분리됐다.

 

 

이렇게 분리하면 장점이 뭐가 있을까?

■ 사용자 정의 훅을 통해 이름을 적절하게 지정하면 코드의 가독성이 좋아진다.

(구현이 동일하더라도 이름이 다르면 다른 종류의 훅으로 여긴다.)

 

■  마이크로 상태 관리 라이브러리에서도 중요하다.

useCount가 Component에서 분리됐으므로 건드리지 않고 기능을 추가할 수 있다.

const useCount = () => {
 const [count, setCount] = useState(0);
    
    useEffect(() => {// 로그추가, s
    
    	console.log(`count is changed to ${count}`);
        
    }, [count]);// 로그추가, e
    
 return [count, setCount];

 }

이처럼 useCount 로직만 변경해서 디버깅 로그를출력하는 기능을 추가할 수 있다.

컴포넌트를 수정할 필요가 전혀 없다.

 

바로 이 로직을 사용자 정의 훅으로 분리했을 때의 장점이다.

 

 노드 패키지 매니저(npm)깃허브에서 오픈소스로 공개된 다양한 사용자 정의 훅을 찾아 볼 수 있다.


서스펜스(suspense) 동시성 렌더링에 대해서도 알아볼 필요가 있다.

리액트 훅은 서스펜스 혹은 동시성 렌더링과 함께 작동하도록 설계 및 개발됐기 때문이다.