리액트 컴포넌트 설계에 대해 정리하다가 커스텀 훅에 대해 접하게 되었고,
로직과 UI를 분리하면 좋을 것 같아서 정리해본다.
비슷한 로직이 여러 컴포넌트에서 사용될 때 주로 사용
중복되는 로직을 유틸 함수와 같은 느낌으로 커스텀 훅을 만들어서 최소화시킬 수 있다.
커스텀 훅 만드는 법
- 중복되는 로직을 넣기
- 파일 이름을 useXXX 로 만든다(약속)
// 예 useInput라는 input태그를 위한 state와 onChange 함수를 묶어줌
import { useState, useCallback } from "react";
export default (initialValue = null) => {
// state 정의
const [data, setData] = useState(initialValue );
// 함수 정의
const handler = useCallback(
e => {
const { value, name } = e.target;
setData({
...data,
[name]: value
});
},
[data]
);
return [data, handler];
};
- 리액트의 기본 훅을 이용하여 구현하며, JSX 코드나 렌더링과 관련된 코드를 포함하면 안된다.
- 조건부 블록에선 사용하지 않는다.
- 보통 파라미터로는 초기값을 받아주고, return 부에는 배열로 value, setValue 형식을 취한다.
커스텀 훅의 특징
보통 API 호출, 폼 데이터 관리, 타이머/ 애니메이션 등의 기능에 응용됨
커스텀 훅은 컴포넌트 트리를 통하여 전달되어 생성하는 것이 아닌 각 컴포넌트에서 독립적으로 state 를 생성해준다. 그러므로 커스텀 훅을 사용해서 만든 기능은 각 컴포넌트에서 독립된 상태를 가지게 된다.
선언형 프로그래밍과 커스텀 훅
선언형 프로그래밍은 모든 코드를 보지 않아도 내부에서 잘 구현해놨다고 믿고 사용할 수 있는 프로그래밍
커스텀 훅을 사용하면 선언형 프로그래밍에 근접한 높은 레벨의 추상화 작업을 했다고 여기면 된다. 다만 추상화의 레벨이 높아서 한눈에 이해하기 쉽지 않을 수 있으므로 주의가 필요하다.
'Web Study > React 관련' 카테고리의 다른 글
파일 업로드와 파일 저장... 이진 데이터 다루기 (0) | 2023.08.22 |
---|---|
웹 페이지 최적화의 종류 (0) | 2023.07.25 |
React 컴포넌트 설계에 대해.. (0) | 2023.07.18 |
Vite 공식 문서 - 기본 설정하기 (0) | 2023.06.20 |
Vite - 플러그인 사용하기 (0) | 2023.06.19 |