Можно ли определить состояние, которое переходит само в xstate?

Рассмотрим следующий автомат:

{
  id: 'my_machine',
  initial: 'foo',
  states: {
    foo: {
      on: { 
        TRIGGER_BAR: 'bar'
      }
    },
    bar: {
      on: {
        TRIGGER_BAR: 'bar'
        TRIGGER_FOO: 'foo'
      }
    }
  }
});

Возможно ли bar перейти к bar снова через TRIGGER_BAR событие?

1 ответ

Абсолютно! Это называется самопереходами.

Самопереход - это когда состояние переходит в само себя, из которого оно может выйти, а затем снова войти в себя. Самопереходы могут быть внутренними или внешними.

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

В приведенном выше примере вы, вероятно, не захотите переходить на barопять же, поскольку нет обновления значения контекста. Но вы вполне можете создать действие с assign, которое изменяет контекст.

Другие вопросы по тегам