Skip to content

检查

检查 API 是一种检查状态机状态转换和演员系统中每个方面的方法。包括:

  • 演员生命周期
  • 演员事件通信
  • 演员快照更新

检查 API 允许您将一个“检查器”(观察者)附加到演员系统的根部,以观察检查事件:

const actor = createActor(machine, {
inspect: (inspectionEvent) => {
// type: '@xstate.actor' or
// type: '@xstate.snapshot' or
// type: '@xstate.event'
console.log(inspectionEvent);
}
});

检查器将接收系统中每个演员的检查事件,使您能够详细了解从单个演员的变化到演员之间的通信的所有情况。

检查事件

检查事件是具有 type 属性的事件对象,该属性指示检查事件的类型。有三种类型的检查事件:

演员检查事件

演员检查事件 (@xstate.actor) 在系统中的演员被创建时发出。它包含以下属性:

  • type - 检查事件的类型,总是 '@xstate.actor'
  • actorRef - 演员的引用
  • rootId - 系统根演员的会话 ID

演员检查事件的示例:

{
type: '@xstate.actor',
actorRef: {/* Actor reference */},
rootId: 'x:0',
}

事件检查事件

事件检查事件 (@xstate.event) 在事件发送到演员时发出。它包含以下属性:

  • type - 检查事件的类型,总是 '@xstate.event'
  • actorRef - 事件目标演员的引用
  • rootId - 系统根演员的会话 ID
  • event - 被发送的事件对象
  • sourceRef - 发送事件的源演员的引用,如果源未知或事件直接发送到演员,则为 undefined

事件检查事件的示例:

{
type: '@xstate.event',
actorRef: {/* Actor reference */},
rootId: 'x:0',
event: {
type: 'someEvent',
message: 'hello'
},
sourceRef: {/* Actor reference */},
}

快照检查事件

快照检查事件 (@xstate.snapshot) 在演员的快照更新时发出。它包含以下属性:

  • type - 检查事件的类型,总是 '@xstate.snapshot'
  • actorRef - 演员的引用
  • rootId - 系统根演员的会话 ID
  • snapshot - 演员的最新快照
  • event - 导致快照更新的事件

快照检查事件的示例:

{
type: '@xstate.snapshot',
actorRef: {/* Actor reference */},
rootId: 'x:0',
snapshot: {
status: 'active',
context: { count: 31 },
// ...
},
event: {
type: 'increment'
}
}