Skip to content

动作和参与者

当状态机运行时,它可以执行称为动作的效果。动作在转换触发时执行。动作是“触发即忘的效果”;一旦机器触发了动作,它就会继续处理转换并忘记该动作。你也可以在状态进入或退出时触发动作。阅读更多关于动作的信息。

状态机可以调用参与者作为较长时间运行的进程,这些进程可以接收事件、发送事件,并根据接收到的事件改变其行为。你可以在进入状态时调用参与者,并在退出时停止。阅读更多关于参与者的信息。

添加动作​

  • 选择一个状态或转换并使用 动作。
  • 选择一个状态并使用 进入动作 或 退出动作。
  • 选择一个状态或转换,从右侧工具菜单打开 详细信息 面板,并使用 效果 或 动作 按钮,然后选择 添加进入动作、添加退出动作 或 添加动作。

使用 编辑图标按钮打开 源代码 面板并添加自定义实现代码。动作默认创建为自定义动作,但你也可以使用 XState 内置动作。

要删除一个动作,使用 Backspace 键,右键单击并选择 删除,或使用 详细信息 面板中的 删除图标按钮。

添加动作参数​

你可以通过选择动作并使用 参数 来添加动作参数。

添加调用的参与者​

你可以在单个状态上调用多个参与者。顶级最终状态不能有调用的参与者。阅读更多关于调用参与者的信息。

在上面的视频播放器中,当视频播放器处于 打开 状态时,会调用 startVideo 参与者。

在状态上调用参与者​

  • 选择一个状态并使用 调用。
  • 选择一个状态,从右侧工具菜单打开状态 详细信息 面板,并使用 效果 按钮,然后选择 添加调用的参与者。

使用 编辑图标按钮打开 源代码 面板并输入参与者的源逻辑。

为你的参与者提供一个 ID,以便可以使用 sendTo 或 stop 动作来停止并向参与者发送事件。你可以通过选择参与者并使用 输入属性 来添加参与者输入。

要删除一个参与者,使用 Backspace 键,右键单击并选择 删除,或使用 详细信息 面板中的 删除图标按钮。

调用完成和调用错误事件​

调用完成事件 和 调用错误事件 在调用完成或返回错误后从状态转换。源状态必须有一个调用的参与者才能创建调用完成或调用错误事件。

  • 选择具有调用参与者的状态并从该状态创建一个新转换。第一个新转换将创建为调用完成事件。
  • 后续的新转换将创建为调用错误事件。

要将调用完成或调用错误事件改回常规转换,使用 三点菜单或 右键单击 转换,并从 事件类型 中选择 始终。

XState 内置动作​

你可以使用 源代码 面板中的逻辑模板中的以下内置 XState 动作,这些动作将在你的 导出代码 中格式化。选项有:

在 Stately 编辑器中生成参与者​

即将推出