IT/React
React에서 여러 상태 한 번에 관리하는 hook(훅) 만들기
Dev. Sean
2024. 1. 25. 17:28
반응형
상태 관리는 React 애플리케이션에서 중요한 부분입니다.
하지만 때로는 useState를 과도하게 사용하여 코드의 복잡성을 불필요하게 증가시키는 경우가 있습니다.
예를 들어, 다음과 같은 코드를 생각해 볼 수 있습니다:
import React, { useState } from 'react';
const OverusedStateComponent = () => {
// 각각의 상태를 별도의 useState로 관리
const [isVisible, setIsVisible] = useState(true);
const [isDisabled, setIsDisabled] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const [isError, setIsError] = useState(false);
const [isExpanded, setIsExpanded] = useState(false);
// ... 더 많은 상태가 이어짐
// 상태 관련 로직들...
// ...
return (
<div>
{/* UI 컴포넌트 */}
{/* ... */}
</div>
);
};
이 코드는 각 상태를 별도의 useState로 관리하고 있으며, 상태가 많아질수록 코드가 길어지고 복잡해집니다.
이러한 접근 방식은 상태 간의 관계를 추적하기 어렵게 만들고, 유지 보수를 복잡하게 합니다.
이 문제를 해결하기 위한 한 가지 방법은 여러 상태를 하나의 객체로 관리하는 사용자 정의 훅을 만드는 것입니다.
예를 들어, 다음과 같은 훅을 사용할 수 있습니다:
import { useState } from 'react';
export interface StateMap {
[key: string]: boolean;
}
const useMultipleStates = (initialState: StateMap) => {
const [states, setStates] = useState<StateMap>(initialState);
const setState = (newState: StateMap) => {
setStates(prevState => ({
...prevState,
...newState
}));
};
return { states, setState };
};
이 훅을 사용하면 여러 상태를 하나의 객체에서 관리할 수 있으며, 필요할 때 간편하게 상태를 업데이트할 수 있습니다:
const { states, setState } = useMultipleStates({
isButtonVisible: true,
isButtonDisabled: false,
isFieldReadOnly: false
});
setState({ isButtonVisible: false, isButtonDisabled: true });
이러한 방식으로 상태 관리를 중앙화하고 간소화함으로써, 코드의 가독성을 높이고 유지 보수를 용이하게 만들 수 있습니다.
반응형