使用xstate,是否可以配置一个适用于所有状态并在所有状态和子状态下以相同方式处理的事件?

2023-12-27

我是 xstate 的新手,我尝试在应用程序中使用它,用户可以根据父状态和/或子状态在应用程序中请求不同的内容。但是,无论应用程序处于什么状态/子状态,用户都应该能够发出一些请求。无论之前的状态是什么,对这些事件的响应都是相同的。 如何配置此事件,以便我不必在所有状态/子状态下重复定义它?


是的 - 选择转换的算法类似于 DOM 事件传播,因为它从叶节点搜索到根节点。

您可以在根节点(顶层)上定义转换,该转换将在任何状态下自然处理:

import { createMachine } from 'xstate';

const machine = createMachine({
  // ...

  // top-level transitions
  on: {
    ESC: {/* ... */}
  },
  states: {
    // ...
    someState: {
      on: {
        ESC: {/* override top-level transition */}
      }
    }
  }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用xstate,是否可以配置一个适用于所有状态并在所有状态和子状态下以相同方式处理的事件? 的相关文章

随机推荐