createMachine()
createMachine<
S,E>(definition,initial):object
createMachine<
S,E,C>(definition,initial,initialContext):object
Creates a finite state machine.
Type Parametersβ
S: S extends stringβ
Union of state names
E: E extends stringβ
Union of event names
C: Cβ
Context type
Parametersβ
Overload 1:
definition: MachineDefinition<S, E, undefined>β
The state/transition map
initial: Sβ
The initial state
Overload 2:
definition: MachineDefinition<S, E, C>β
The state/transition map
initial: Sβ
The initial state
initialContext: Cβ
The initial context value
Returns: objectβ
A machine with current, send, matches, trySend, onTransition, reset
current(): () => Sβ
Returns: Sβ
send(): (event) => Sβ
event:
E
Returns:S
matches(): (state) => booleanβ
state:
S
Returns:boolean
trySend(): (event) => Option<S>β
event:
E
Returns:Option<S>
onTransition(): (listener) => () => voidβ
listener:
TransitionListener<S, E>
Returns:> (): void
Returns: voidβ
reset(): () => voidβ
Returns: voidβ
Sinceβ
2.4.0
Exampleβ
const door = createMachine({
locked: { unlock: { to: "closed" } },
closed: { open: { to: "opened" }, lock: { to: "locked" } },
opened: { close: { to: "closed" } },
}, "locked");
door.send("unlock"); // "closed"
door.send("open"); // "opened"
door.matches("opened"); // true
SimpleTransition<S>β
A simple transition to a target state.
Sinceβ
2.4.0
Type Parametersβ
S: S extends stringβ
Union of state names
Propertiesβ
toβ
readonlyto:S
ContextTransition<S, C>β
A transition that updates context.
Sinceβ
2.4.0
Type Parametersβ
S: S extends stringβ
Union of state names
C: Cβ
Context type
Propertiesβ
to: Sβ
update(): (ctx) => Cβ
ctx:
C
Returns:C
Transition<S, C>β
Transition<
S,C> = SimpleTransition<S> | ContextTransition<S,C>
A transition is either simple (just target) or with context update.
Type Parametersβ
S: S extends stringβ
Union of state names
C: Cβ
Context type
Sinceβ
2.4.0
Transitions<S, E, C>β
Transitions<
S,E,C> ={ readonly [K in E]?: Transition<S, C> }
A transition map for a single state.
Type Parametersβ
S: S extends stringβ
Union of state names
E: E extends stringβ
Union of event names
C: Cβ
Context type
Sinceβ
2.4.0
MachineDefinition<S, E, C>β
MachineDefinition<
S,E,C> ={ readonly [K in S]: Transitions<S, E, C> }
Full state machine definition.
Type Parametersβ
S: S extends stringβ
Union of state names
E: E extends stringβ
Union of event names
C: Cβ
Context type
Sinceβ
2.4.0
TransitionListener()<S, E>β
TransitionListener<
S,E> = (from,event,to) =>void
A transition listener receives the previous state, the event, and the new state.
Type Parametersβ
S: S extends stringβ
Union of state names
E: E extends stringβ
Union of event names
Parametersβ
from: Sβ
event: Eβ
to: Sβ
Returns: voidβ
Sinceβ
2.4.0