ReactJS 디자인 패턴 ~State Machine Pattern~

발행: (2026년 1월 6일 오전 09:01 GMT+9)
2 min read
원문: Dev.to

Source: Dev.to

개요

State Machine Pattern은 React 코드베이스를 읽기 쉽고, 유지보수가 용이하며, 생산성을 높이는 데 도움이 됩니다. 여러 개의 불리언 상태 변수를 관리하는 대신, 단일 status 변수 하나로 컴포넌트의 상태를 표현할 수 있어 상태 관리가 단순해지고 불가능한 조합(예: 로딩 중이면서 동시에 오류 상태인 경우)을 방지할 수 있습니다.

Before

function App() {
  const [error, setError] = useState(true);
  const [loading, setLoading] = useState(false);
  const [ready, setReady] = useState(false);

  const handleNextState = () => {
    if (status === "ready") {
      setLoading(true);
      setReady(false);
      setError(false);
    } else if (status === "loading") {
      setError(true);
      setReady(false);
      setLoading(false);
    } else if (status === "error") {
      setReady(true);
      setError(false);
      setLoading(false);
    }
  };

  return (
    
      
## State Machine Pattern

      Next State

      {loading && 
Loading...
}
      {error && 
Something went wrong!
}
      {ready && 
Ready to go!
}
    
  );
}

상태 머신 패턴

      Next State

      {loading && 
Loading...
}
      {error && 
Something went wrong!
}
      {ready && 
Ready to go!
}

적용 후

function App() {
  const [status, setStatus] = useState('ready');

  const handleNextState = () => {
    if (status === "ready") {
      setStatus("loading");
    } else if (status === "loading") {
      setStatus("error");
    } else if (status === "error") {
      setStatus("ready");
    }
  };

  return (
    
      
## State Machine Pattern

      Next State

      {status === "loading" && 
Loading...
}
      {status === "error" && 
Something went wrong!
}
      {status === "ready" && 
Ready to go!
}
    
  );
}
Back to Blog

관련 글

더 보기 »

ReactJS 디자인 패턴 ~State 동시 배치~

Collocating State는 상태를 사용되는 위치에 최대한 가깝게 배치하는 것입니다. 이 패턴은 복잡성을 줄이고 컴포넌트를 더 쉽게 이해할 수 있게 합니다. Before...