👉 SIN ARMAR
👉 CEBADO
👉 LAVADO
👉 ARMADO
👉 YERBA
👉 AGUA
👉 CEBADAS
Por favor, ingrese un email válido
Por favor, ingrese un email válido
{
email: "",
esValido: false, // 🚫
}{
email: "luke.s",
esValido: false, // 🚫
}{
email: "",
esValido: false, // 🚫
}{
email: "luke@gmail.com",
esValido: true, // ✅
}
Por favor, ingrese un email válido
Por favor, ingrese un email válido
{
email: "",
esValido: false, // 🚫
validado: false // 🚫
}{
email: "luke.s",
esValido: false, // 🚫
validado: true // ✅
}{
email: "",
esValido: false, // 🚫
validado: true // ✅
}{
email: "luke@gmail.com",
esValido: true, // ✅
validado: true // ✅
}
| email.length | > 0 | 0 |
| esValido | TRUE | FALSE |
| validado | TRUE | FALSE |
{
email: "luke.s",
esValido: false, // 🚫
validado: false // 🚫
}{
email: "luke.s",
esValido: true, // ✅
validado: false // 🚫
}{
email: "",
esValido: true, // ✅
validado: false // 🚫
}{
email: "",
esValido: true, // ✅
validado: true // ✅
}{
esValido: true, // ✅
validado: false // 🚫
}{
email: "",
esValido: true // ✅
}{
email: "luke@gmail.com",
validado: false // 🚫
}if (email.length === 0 &&
!validado &&
!esValido) {
// mostrar el input normal
}
if (validado &&
!esValido) {
// mostrar input con error
}
if (email.length > 0 &&
validado &&
esValido) {
// mostrar input validado
}
Por favor, ingrese un email válido
Por favor, ingrese un email válido
{
email: "",
esValido: false, // 🚫
validado: false // 🚫
}{
email: "luke.s",
esValido: false, // 🚫
validado: true // ✅
}{
email: "",
esValido: false, // 🚫
validado: true // ✅
}{
email: "luke@gmail.com",
esValido: true, // ✅
validado: true // ✅
}VACÍO
INVÁLIDO
INVÁLIDO
VÁLIDO
if (email.length === 0 &&
!validado &&
!esValido) {
// mostrar el input normal
}
if (validado &&
!esValido) {
// mostrar input con error
}
if (email.length > 0 &&
validado &&
esValido) {
// mostrar input validado
}if (estado === "VACIO") {
// mostrar el input normal
}
if (estado === "INVALIDO") {
// mostrar input con error
}
if (estado === "VALIDO") {
// mostrar input validado
}👉 tienen un ESTADO INICIAL
👉 TRANSICIONES entre estados
👉 un número finito de ESTADOS
👉 EVENTOS que disparan transiciones
👉 un número finito de ESTADOS FINALES
const inputConValidacionMaquina = Machine(
{
id: 'inputConValidacion',
initial: 'vacio',
states: {
vacio: {
on: {
escribir: "editando"
}
},
editando: {
on: {
validar: "validando"
}
},
validando: {
on: {
validacion_ok: "valido",
validacion_error: "invalido"
}
},
valido: {
on: {
escribir: "editando"
}
},
invalido: {
on: {
escribir: "editando"
}
}
}
}
)CADA MÁQUINA TIENE UN ID
UN ESTADO INICIAL
UN CONJUNTO DE ESTADOS
TRANSICIONES A OTROS ESTADOS A PARTIR DE EVENTOS