Глобальный переход в состояние "лови все, делай, убирай, уходи" - PullRequest
0 голосов
/ 11 июля 2019

У меня есть состояние перехвата всех ошибок, которое выполняет некоторую очистку для моего приложения и хорошо завершается.

В настоящее время мне нужно создать определенное событие {type: "unexpected_error"} и добавить переход к каждому состоянию моей машины, чтобы достичь этого.

Есть ли более простой способ указать переход для всех состояний, поэтому мне не нужно добавлять этот переход в каждое отдельное состояние?

1 Ответ

1 голос
/ 15 июля 2019

Да! Вы можете размещать переходы на машине верхнего уровня.

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'
    })
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...