白衣非少年
2023-06-15 10:05:18
基本上,我有很多不同的狀態(tài)。我希望機(jī)器能夠通過事件從外部接收和更新上下文(無論它處于哪種狀態(tài))。我發(fā)現(xiàn)此鏈接說明事件如何成為根級(jí)別...?使用 xstate,是否可以配置適用于所有狀態(tài)并在所有狀態(tài)和子狀態(tài)中以相同方式處理的事件?但我似乎還記得 new assigns() 在狀態(tài)改變之前是如何真正生效的。
1 回答

開滿天機(jī)
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
我不知道它在任何地方都有記錄,但我從 xstate 論壇中了解到的一個(gè)看似不錯(cuò)的解決方案是進(jìn)行頂級(jí)轉(zhuǎn)換。
{
initial: 'Idle',
on: {
NEW_BLOCK: {
actions: assign({
block: 'addNewBlock'
}),
internal: true,
},
},
states: {
Idle: {},
StateOne: {},
StateTwo: {},
}
}
這將導(dǎo)致整個(gè)機(jī)器始終監(jiān)視“NEW_BLOCK”事件,并將其添加到上下文中,無論該事件是否在空閑、StateOne、StateTwo 或您可能添加的任何其他狀態(tài)期間到達(dá)。無論機(jī)器處于哪種狀態(tài),它都會(huì)導(dǎo)致自轉(zhuǎn)換。但是更新后的上下文將在之后立即可用。
添加回答
舉報(bào)
0/150
提交
取消