xstate

安装量: 128
排名: #6728

安装

npx skills add https://github.com/seed-hypermedia/seed --skill xstate
XState v5 Skill
CRITICAL: This skill covers XState v5 ONLY.
Do not use v4 patterns, APIs, or documentation. XState v5 requires
TypeScript 5.0+
.
When to Use
State machine and statechart design
Actor system implementation
XState v5 API usage (
setup
,
createMachine
,
createActor
)
Framework integration (React, Vue, Svelte)
Complex async flow orchestration
Key Concepts
Actors
are independent entities that communicate by sending messages. XState v5 supports:
Actor Type
Creator
Use Case
State Machine
createMachine()
Complex state logic with transitions
Promise
fromPromise()
Async operations (fetch, timers)
Callback
fromCallback()
Bidirectional streams (WebSocket, EventSource)
Observable
fromObservable()
RxJS streams
Transition
fromTransition()
Reducer-like state updates
Quick Start
import
{
setup
,
assign
,
createActor
}
from
'xstate'
;
const
machine
=
setup
(
{
types
:
{
context
:
{
}
as
{
count
:
number
}
,
events
:
{
}
as
{
type
:
'increment'
}
|
{
type
:
'decrement'
}
,
}
,
actions
:
{
increment
:
assign
(
{
count
:
(
{
context
}
)
=>
context
.
count
+
1
}
)
,
decrement
:
assign
(
{
count
:
(
{
context
}
)
=>
context
.
count
-
1
}
)
,
}
,
}
)
.
createMachine
(
{
id
:
'counter'
,
initial
:
'active'
,
context
:
{
count
:
0
}
,
states
:
{
active
:
{
on
:
{
increment
:
{
actions
:
'increment'
}
,
decrement
:
{
actions
:
'decrement'
}
,
}
,
}
,
}
,
}
)
;
// Create and start actor
const
actor
=
createActor
(
machine
)
;
actor
.
subscribe
(
(
snapshot
)
=>
console
.
log
(
snapshot
.
context
.
count
)
)
;
actor
.
start
(
)
;
actor
.
send
(
{
type
:
'increment'
}
)
;
v5 API Changes (NEVER use v4 patterns)
v4 (WRONG)
v5 (CORRECT)
createMachine()
alone
setup().createMachine()
interpret()
createActor()
service.start()
actor.start()
state.matches()
snapshot.matches()
services: {}
actors: {}
state.context
snapshot.context
Invoke vs Spawn
invoke
Actor lifecycle tied to state (created on entry, stopped on exit)
spawn
Dynamic actors independent of state transitions Inspection API (Debugging) const actor = createActor ( machine , { inspect : ( event ) => { if ( event . type === '@xstate.snapshot' ) { console . log ( event . snapshot ) ; } } , } ) ; Event types: @xstate.actor , @xstate.event , @xstate.snapshot , @xstate.microstep File Organization feature/ ├── feature.machine.ts # Machine definition ├── feature.types.ts # Shared types (optional) ├── feature.tsx # React component └── feature.test.ts # Machine tests Learning Path Level Focus Beginner Counter, toggle machines; setup() pattern Intermediate Guards, actions, hierarchical states, fromPromise() Advanced Observable actors, spawning, actor orchestration Supporting Documentation PATTERNS.md - Guards, actions, actors, hierarchical/parallel states REACT.md - React hooks ( useMachine , useActor , useSelector ) EXAMPLES.md - Complete working examples Resources Official Docs Stately Studio - Visual editor
返回排行榜