演员和在xstate中调用服务有什么区别?
我对演员和在 xstate 中调用服务之间的区别有点困惑,因为它们在我看来是一样的。
回答
最简单的解释是services绑定到它们所处的状态。当机器进入/存在该状态时,它们会启动和停止。
Actors 不受特定状态的约束,它们可以在机器进入特定状态时启动和停止,但它们存在于上下文中,并且可以访问机器中的每个状态。
示例:子机器即服务(机器进入pending状态时启动,机器处于此状态时自动停止。
const parentMachine = Machine({
id: 'parent',
initial: 'pending',
states: {
pending: {
invoke: {
src: childMAchine
}
}
}
});
示例:子机器作为参与者,在机器进入waiting状态时启动,作为localOne属性存在于上下文中。
const parentMachine = Machine({
id: 'parent',
initial: 'waiting',
context: {
localOne: null
},
states: {
waiting: {
entry: assign({
localOne: () => spawn(childMachine)
})
}
}
});