为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2023-06-15 10:05:18
基本上,我有很多不同的状态。我希望机器能够通过事件从外部接收和更新上下文(无论它处于哪种状态)。我发现此链接说明事件如何成为根级别... 使用 xstate,是否可以配置适用于所有状态并在所有状态和子状态中以相同方式处理的事件?但我似乎还记得 new assigns() 在状态改变之前是如何真正生效的。
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

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


{

  initial: 'Idle',

  on: {

    NEW_BLOCK: {

      actions: assign({

        block: 'addNewBlock'

      }),

      internal: true,

    },

  },

  states: {

    Idle: {},

    StateOne: {},

    StateTwo: {},

  }

}

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


查看完整回答
反对 回复 2023-06-15
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信