Skip to content

Instantly share code, notes, and snippets.

@the-main-thing
Last active July 3, 2020 12:21
Show Gist options
  • Save the-main-thing/759074eaecbd3a1f04cfa54145327fa8 to your computer and use it in GitHub Desktop.
Save the-main-thing/759074eaecbd3a1f04cfa54145327fa8 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
// - XState (all XState exports)
const submitFormMachine = Machine({
id: 'submitForm',
initial: 'idle',
context: {
input: null,
data: null,
error: null
},
on: {
RESET: {
target: '#submitForm.idle',
actions: ['resetContext']
}
},
states: {
idle: {
on: {
CALL: {
target: 'pending',
actions: ['setInputData', 'removeError']
}
}
},
pending: {
on: {
CANCEL: {
target: 'idle',
actions: ['removeInputData']
},
ERROR: {
target: 'error',
actions: ['setError']
},
RESOLVE: {
target: 'idle',
actions: ['setSuccessData'],
}
}
},
error: {
on: {
RESET: {
target: 'idle',
actions: ['resetContext', 'removeError']
}
}
},
error: {
on: {
CALL: {
target: 'pending',
actions: ['setInputData']
}
}
}
}
}, {
actions: {
setInputData: assign({
input: (context, event) => event.data
}),
removeInputData: assign({
input: (context, event) => null
}),
setError: assign({
error: (context, event) => event.data
}),
removeError: assign({
error: (context, event) => null
}),
setSuccessData: assign({
data: (context, event) => event.data
}),
resetContext: assign((context, event) => ({ data: null, error: null, input: null }))
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment