让 xstate 机器接收事件并更新上下文(但不更改状态),无论它处于哪种状态
Have an xstate machine receive an event and update context(but not change state) regardless of which state it's in
基本上,我有一堆不同的状态。我希望机器能够通过事件从外部接收和更新上下文(无论它处于哪种状态)。我发现这个 link 说事件如何成为根级别...
但我似乎还记得 new assigns() 是如何在状态改变之前实际生效的。
我不知道它在任何地方都有记录,但我从 xstate 论坛中了解到的一个看似不错的解决方案是进行顶级转换。
{
initial: 'Idle',
on: {
NEW_BLOCK: {
actions: assign({
block: 'addNewBlock'
}),
internal: true,
},
},
states: {
Idle: {},
StateOne: {},
StateTwo: {},
}
}
这将导致整个机器始终监视 'NEW_BLOCK' 事件,并将其添加到上下文中,无论事件是否在空闲、StateOne、StateTwo 或您可能添加的任何其他状态期间到达.无论机器处于何种状态,它都会导致自转换。但更新后的上下文将在之后立即可用。
基本上,我有一堆不同的状态。我希望机器能够通过事件从外部接收和更新上下文(无论它处于哪种状态)。我发现这个 link 说事件如何成为根级别...
但我似乎还记得 new assigns() 是如何在状态改变之前实际生效的。
我不知道它在任何地方都有记录,但我从 xstate 论坛中了解到的一个看似不错的解决方案是进行顶级转换。
{
initial: 'Idle',
on: {
NEW_BLOCK: {
actions: assign({
block: 'addNewBlock'
}),
internal: true,
},
},
states: {
Idle: {},
StateOne: {},
StateTwo: {},
}
}
这将导致整个机器始终监视 'NEW_BLOCK' 事件,并将其添加到上下文中,无论事件是否在空闲、StateOne、StateTwo 或您可能添加的任何其他状态期间到达.无论机器处于何种状态,它都会导致自转换。但更新后的上下文将在之后立即可用。