En primer lugar, aquí está el código. necesito arreglar
Básicamente, hay dos máquinas:
currentStateMachine :send ) una vez por segundo según el estado real;context para almacenar la marca de tiempo actual y el estado;intervalsMachine con el context de currentStateMachine ?currentStateMachine esperará a que se complete la invoke antes de aceptar otro evento de estado? ¿O esperará hasta que se procese el estado y solo después de eso se procese un nuevo evento?intervalsMachine :context para almacenar startTime del intervalo, su length y el estado durante este intervalo; ¿Cómo invocar a intervalsMachine (máquina invocada) con el context de currentStateMachine (máquina que invoca intervalsMachine )?
¿ currentStateMachine esperará a que se complete la invoke antes de aceptar otro evento de estado? ¿O esperará hasta que se procese el estado y solo después de eso se procese un nuevo evento?
Puede usar la propiedad de data con invoke para especificar el contexto que se tomará del padre.
const timerMachine = createMachine({ id: 'timer', context: { duration: 1000 // default duration } /* ... */ }); const parentMachine = createMachine({ id: 'parent', initial: 'active', context: { customDuration: 3000 }, states: { active: { invoke: { id: 'timer', src: timerMachine, // Deriving child context from parent context data: { duration: (context, event) => context.customDuration } } } } });https://xstate.js.org/docs/guides/communication.html#invoking-with-context
Otra opción es usar el patrón (ctx, evt) => ... para la opción src .