Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using xstate, is it possible to configure an event that is applicable under all states and is handled in the same way across all states and substates?

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?

like image 271
curiousWebDev Avatar asked Jan 23 '26 01:01

curiousWebDev


1 Answers

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 */}
      }
    }
  }
});
like image 117
David Khourshid Avatar answered Jan 25 '26 15:01

David Khourshid



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!