动作和参与者
当状态机运行时,它可以执行称为动作的效果。动作在转换触发时执行。动作是“触发即忘的效果”;一旦机器触发了动作,它就会继续处理转换并忘记该动作。你也可以在状态进入或退出时触发动作。阅读更多关于动作的信息。
状态机可以调用参与者作为较长时间运行的进程,这些进程可以接收事件、发送事件,并根据接收到的事件改变其行为。你可以在进入状态时调用参与者,并在退出时停止。阅读更多关于参与者的信息。
添加动作
- 选择一个状态或转换并使用 动作。
- 选择一个状态并使用 进入动作 或 退出动作。
- 选择一个状态或转换,从右侧工具菜单打开 详细信息 面板,并使用 效果 或 动作 按钮,然后选择 添加进入动作、添加退出动作 或 添加动作。
使用 编辑图标按钮打开 源代码 面板并添加自定义实现代码。动作默认创建为自定义动作,但你也可以使用 XState 内置动作。
要删除一个动作,使用 Backspace 键,右键单击并选择 删除,或使用 详细信息 面板中的 删除图标按钮。
添加动作参数
你可以通过选择动作并使用 参数 来添加动作参数。
添加调用的参与者
你可以在单个状态上调用多个参与者。顶级最终状态不能有调用的参与者。阅读更多关于调用参与者的信息。
在上面的视频播放器中,当视频播放器处于 打开 状态时,会调用 startVideo 参与者。
在状态上调用参与者
- 选择一个状态并使用 调用。
- 选择一个状态,从右侧工具菜单打开状态 详细信息 面板,并使用 效果 按钮,然后选择 添加调用的参与者。
使用 编辑图标按钮打开 源代码 面板并输入参与者的源逻辑。
为你的参与者提供一个 ID,以便可以使用 sendTo
或 stop
动作来停止并向参与者发送事件。你可以通过选择参与者并使用 输入属性 来添加参与者输入。
要删除一个参与者,使用 Backspace 键,右键单击并选择 删除,或使用 详细信息 面板中的 删除图标按钮。
调用完成和调用错误事件
调用完成事件 和 调用错误事件 在调用完成或返回错误后从状态转换。源状态必须有一个调用的参与者才能创建调用完成或调用错误事件。
- 选择具有调用参与者的状态并从该状态创建一个新转换。第一个新转换将创建为调用完成事件。
- 后续的新转换将创建为调用错误事件。
要将调用完成或调 用错误事件改回常规转换,使用 三点菜单或 右键单击 转换,并从 事件类型 中选择 始终。
XState 内置动作
你可以使用 源代码 面板中的逻辑模板中的以下内置 XState 动作,这些动作将在你的 导出代码 中格式化。选项有:
-
assign:将数据分配给状态上下文。
-
raise:引发一个事件,该事件由同一机器接收。
-
log:一种简单的方式将消息记录到控制台。
-
sendTo:将事件发送到特定参与者。
-
stop:停止一个子参与者。
在 Stately 编辑器中生成参与者
即将推出