我对 Xstate 完全陌生,我很难在官方文档中找到帮助。
问题很简单,我想知道一个事件是否在不应该触发的时候触发。
我有一个在转换方面非常严格的基本工作流程,例如,如果不从“已上传”传递,我的状态就不能从“待处理”变为“已处理”。
如果我使用:
stateService.send('PROCESSED')
当状态处于“待处理”状态时,状态不会改变(正确),但是 Xstate 中是否有任何实用程序或事件实际上告诉我事务没有被触发,因为事件不允许/正确?
这是我的状态
const stateMachine = Machine(
{
id: 'vocalTrack',
initial: 'PENDING',
context: {},
states: {
PENDING: {
on: {
UPLOADED: 'UPLOADED',
},
},
UPLOADED: {
on: {
PROCESSED: 'PROCESSED',
},
entry: 'onUploaded',
},
PROCESSED: {
on: {
READY: 'READY',
ERROR: 'ERROR',
},
exit: 'onProcessed',
},
READY: {
type: 'final',
},
ERROR: {
on: {
UPLOADED: 'UPLOADED',
},
type: 'final',
},
},
},
{
actions: {
onUploaded: (context, event) => {
console.log(`++++ onUploaded action: ++++`)
},
onProcessed: (context, event) => {
console.log(`++++ onProcessed action: ++++`)
},
},
},
)
const stateService = interpret(stateMachine)
stateService.init('PENDING')
// I'd like to catch the following workflow errors
stateService.send('UPLOADED')
stateService.send('PROCESSED')