목록 보기
Finite state machine & statecharts – XState
프론트엔드

Finite state machine & statecharts – XState

화해
화해
2021년 9월 16일

두줄요약

XState로 React의 복잡한 상태를 FSM과 Statecharts로 모델링하는 방법을 설명했습니다.\nboolean 조합 문제를 context, guards, 계층·병렬 상태와 비동기 전이로 개선했습니다.

문제 상황

  • 회원가입 UI의 로딩·성공·오류·입력 검증을 boolean 조합으로 관리하며 불필요한 상태 조합과 잠재 버그 증가
  • 단일 FSM에 모든 조합을 상태로 추가할 때 발생하는 state explosion 문제

구조와 흐름

  • XState의 createMachine으로 상태·이벤트·전이를 선언하고 useMachine과 state.matches()로 React UI 연동
  • context와 assign으로 입력값·오류 데이터를 머신 내부에서 관리하고 invoke로 비동기 회원가입 요청 모델링
  • guards로 조건부 전이, 계층 상태로 오류 세분화, parallel 상태로 ID·비밀번호 검증 동시 관리

선택 이유

  • 상태와 전이를 도식화해 복잡한 흐름 및 가능한 이동 조건의 명시적 표현
  • visualizer를 통한 상태 머신 확인과 동작 테스트 지원
  • history와 delayed transition을 통한 이전 하위 상태 복원 및 시간 기반 전이 지원

적용해볼 점

  • 다단계 입력 검증, 비동기 요청, 업무 워크플로처럼 상태 전이가 복잡한 UI에 상태 머신 적용
  • 상태 흐름 시각화를 통한 개발자·비개발자 간 커뮤니케이션 보조

다음 읽기

#XState 주제를 다룬 다른 회사 글

자바스크립트로 만든 유한 상태 기계 XState

XState로 FSM의 상태, 이벤트, 전이와 컨텍스트를 분리하는 방법을 장바구니 예제로 설명했습니다. React 훅, 가드, 액션, 비동기 서비스로 복잡한 UI 흐름을 선언적으로 관리합니다.

카카오엔터테인먼트FE
카카오엔터테인먼트FE
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...