Глобальный переход в состояние "лови все, делай, убирай, уходи"
У меня есть состояние перехвата всех ошибок, которое делает некоторую очистку для моего приложения и завершается красиво.
В настоящее время я должен создать конкретное событие {type: "unexpected_error"}
и добавить переход к каждому состоянию моей машины, чтобы добиться этого.
Есть ли более простой способ указать переход для всех состояний, чтобы мне не приходилось добавлять этот переход в каждое состояние?
1 ответ
Решение
Да! Вы можете размещать переходы на машине верхнего уровня.
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'
})
}
}