XState Tutorials
#3
Email Input
import { createMachine } from "xstate";
import { isValidEmailAddress } from "./isValidEmailAddress";
/**
* Create an email address input which shows
* an error if the user types an invalid email
*
* 1. The value of the text input is controlled
* by context.value
*
* 2. The error message will be shown when you
* enter the 'invalid' state
*
* 3. When the input changes, you'll receive a
* CHANGE event with this shape:
*
* {
* type: 'CHANGE',
* value: 'new value'
* }
*
* 4. There's a file above called isValidEmailAddress,
* which you can pass a string to return a boolean
*/
export const machine = createMachine({
context: {
value: "",
},
initial: "invalid",
states: {
invalid: {},
},
});
/**
* Helpful docs:
*
* Guarded transitions:
* https://xstate.js.org/docs/guides/guards.html#guarded-transitions
*
* Actions on transitions:
* https://xstate.js.org/docs/guides/actions.html#api
*
* Context:
* https://xstate.js.org/docs/guides/context.html#context
*
* Assign action:
* https://xstate.js.org/docs/guides/context.html#assign-action
*/