比方说,我有一台具有单一状态的机器,该机器提供的操作会增加或减少一个值。
const Machine({
id: 'some_machine',
initial: 'initial',
context: {
value: 0
},
states: {
'initial': {
on: {
'inc': {
actions: assign({
value: (ctx) = {
return ctx.value + 1
}
})
},
'dec': {
actions: assign({
value: (ctx) = {
return ctx.value - 1
}
})
}
}
}
}
}
是否可以通过某种方式在initial
中指定一个动作,该动作将在执行其他任何动作后映射context
?例如,我可能想每次将inc
和dec
的结果相乘。
我意识到我可以在inc
和dec
之后都添加一个动作,但是我很想知道这在单个位置是否可行。
答案 0 :(得分:2)
基本上,您想做两件事:
'inc'
和'dec'
)时,都要重新输入该特定状态。在'initial'
状态和target: 'initial'
上定义一个 entry 操作,以便重新输入该状态(即使您已经处于该状态):< / p>
Machine({
id: "some_machine",
initial: "initial",
context: {
value: 0
},
states: {
initial: {
entry: assign({
value: ctx => ctx.value * 2
}),
on: {
inc: {
target: "initial",
actions: assign({
value: ctx => {
return ctx.value + 1;
}
})
},
dec: {
target: "initial",
actions: assign({
value: ctx => {
return ctx.value - 1;
}
})
}
}
}
}
});