javascript - 让 xstate 机器接收事件并更新上下文(但不更改状态),无论它处于哪种状态

标签 javascript xstate

基本上,我有很多不同的状态。我希望机器能够通过事件从外部接收和更新上下文(无论它处于哪种状态)。我发现此链接说明事件如何成为根级别... 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?

但我似乎还记得 new assigns() 在状态发生变化之前是如何真正生效的。

最佳答案

我不知道它在任何地方都有记录,但我从 xstate 论坛上学到的一个看似不错的解决方案是进行顶级转换。

{
initial: 'Idle',
    on: {
      NEW_BLOCK: {
        actions: assign({
          block: 'addNewBlock'
        }),
        internal: true,
      },
    },
    states: {
      Idle: {},
      StateOne: {},
      StateTwo: {},
    }
}

这将导致整个机器始终监视“NEW_BLOCK”事件,并将其添加到上下文中,无论该事件是否在空闲、StateOne、StateTwo 或您可能添加的任何其他状态期间到达。无论机器处于何种状态,它都会导致自转换。但更新后的上下文将在之后立即可用。

关于javascript - 让 xstate 机器接收事件并更新上下文(但不更改状态),无论它处于哪种状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64999160/

相关文章:

javascript - 将 jquery 函数转换为 javascript

javascript - 从 VuetifyJS/VueJS 中的一个代码库为多个平台构建的代码库结构

javascript - 重新加载后在页面上使用 getDisplayMedia 继续录制

javascript - 使用 React 难以获取映射 API 数据中列表项的值

javascript - XState:在没有中间状态的情况下链接多个 promise

javascript - 如何获取多个选择框值并插入字符串数组

javascript - 使用 Context 的问题

javascript - xstate 中的参与者和调用服务有什么区别?

javascript - 将事件发送到 XState 中的子服务数组

javascript - 开 Jest - react 自动机 - 未定义不是一个对象(评估 'machine.states' )