文档
Mermaid 状态图写法入门
用状态、事件和清晰的起止标记画出对象的生命周期;说明 [*] 起点终点、转移标签,以及何时该嵌套状态、何时该拆成两张扁平图来保持可读与完整。
stateDiagram-v2 [*] --> 草稿 草稿 --> 审阅 : 提交 审阅 --> 草稿 : 需修改 审阅 --> 已发布 : 通过 已发布 --> [*]
stateDiagram-v2 [*] --> 草稿 草稿 --> 审阅 : 提交 审阅 --> 草稿 : 需修改 审阅 --> 已发布 : 通过 已发布 --> [*]
滚轮缩放 · 拖拽平移
状态图描述事物如何随时间变化。每个方框是一个状态,每条箭头是触发转移的事件。
使用现代写法
这样开头:
stateDiagram-v2
[*] --> 空闲
空闲 --> 运行中 : 开始
运行中 --> 空闲 : 停止
运行中 --> [*] : 退出
[*] 是特殊标记:
[*] --> 某状态— 从起点进入某状态 --> [*]— 走到终点结束
给转移命名
事件写在冒号后面:
草稿 --> 审阅 : 提交
读者不看代码也应看懂事件。优先用 提交、通过、失败,少写长句。
只在需要时嵌套
某个阶段自己还有小循环时,可以分组:
stateDiagram-v2
[*] --> 活跃
state 活跃 {
[*] --> 就绪
就绪 --> 忙碌 : 开工
忙碌 --> 就绪 : 完成
}
活跃 --> [*] : 退出登录
适度嵌套有帮助。嵌太深会把故事藏起来。宁可拆成两张扁平图,也不要一张迷宫。
写作建议
- 从
[*]开始,再回到[*],生命周期更完整。 - 避免两条路径表达同一事件。
- 若两个状态只差一个标志位,就合并状态,把标志写在转移标签上。