全局过渡到 "catch-all-do-cleanup-exit-nicely" 状态
Global Transition to a "catch-all-do-cleanup-exit-nicely" state
我有一个 catch all 错误状态,它为我的应用程序做了一些清理并正常退出。
目前我必须创建一个特定的事件 {type: "unexpected_error"}
并向我的机器的每个状态添加一个转换来实现它。
有没有更简单的方法可以为所有状态指定转换,这样我就不必将此转换添加到每个状态?
是的!您可以在 top-level 机器上放置转换。
const machine = Machine({
// ...
states: { /*...*/ },
// top-level transition
on: {
"unexpected-error": { actions: /*...*/ }
}
});
或者,因为它只是一个 JavaScript 对象,所以你可以创建一个辅助函数:
function transitionsWithErrorHandler(transitions) {
return {
...transitions,
"unexpected-error": { actions: /*...*/ }
}
}
// ...
states: {
foo: {
on: transitionsWithErrorHandler({
EVENT: 'bar',
ANOTHER_EVENT: 'baz'
})
}
}
我有一个 catch all 错误状态,它为我的应用程序做了一些清理并正常退出。
目前我必须创建一个特定的事件 {type: "unexpected_error"}
并向我的机器的每个状态添加一个转换来实现它。
有没有更简单的方法可以为所有状态指定转换,这样我就不必将此转换添加到每个状态?
是的!您可以在 top-level 机器上放置转换。
const machine = Machine({
// ...
states: { /*...*/ },
// top-level transition
on: {
"unexpected-error": { actions: /*...*/ }
}
});
或者,因为它只是一个 JavaScript 对象,所以你可以创建一个辅助函数:
function transitionsWithErrorHandler(transitions) {
return {
...transitions,
"unexpected-error": { actions: /*...*/ }
}
}
// ...
states: {
foo: {
on: transitionsWithErrorHandler({
EVENT: 'bar',
ANOTHER_EVENT: 'baz'
})
}
}