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

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

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

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


person Paul Razvan Berg    schedule 17.11.2019    source источник


Ответы (1)


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

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

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

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

person Paul Razvan Berg    schedule 17.11.2019