3

I am new to xstate, and I'm trying to use it in an application where a user can request different things in an application, based on parent state and/or sub-state. However, there are some requests that the user should be able to make, no matter what state/sub-state the app is in. The response to those events is the same, no matter what the previous state was. How can I configure this event, so that I don't have to repeat define it under all states/sub-states?

1 Answers1

6

Yes - the algorithm for choosing transitions is similar to DOM event propagation, in that it searches from leaf nodes to root node.

You can define transitions on the root node (top-level) which will be handled in any state naturally:

import { createMachine } from 'xstate';

const machine = createMachine({
  // ...

  // top-level transitions
  on: {
    ESC: {/* ... */}
  },
  states: {
    // ...
    someState: {
      on: {
        ESC: {/* override top-level transition */}
      }
    }
  }
});
David Khourshid
  • 4,918
  • 1
  • 11
  • 10