跳到正文
Mernyx
打开菜单

Mermaid 状态图速查表

状态、状态之间的迁移,以及中间的分支。

这个页面上的每一张图都由Mernyx——macOS 上的原生 Mermaid 编辑器绘制。不是浏览器里跑的 Mermaid.js,而是 App 画布用的同一个渲染器。

状态与迁移

迁移就是一根箭头。箭头后面的冒号后面是引发它的事件。

stateDiagram-v2
  [*] --> Idle
  Idle --> Running : start
  Running --> Idle : stop
一台状态机,起点流向 Idle,started 时转到 Running,stopped 时又回到 Idle。放大图表

开始与结束

同一个 [*] 标记两件事都管:指向它的箭头是结束,从它出发的箭头是开始。

stateDiagram-v2
  [*] --> Draft
  Draft --> Published
  Published --> [*]
一个起点,然后一个标着 Draft 的框,再一个标着 Published 的框,最后一个终点。放大图表

一个选择点

一个提出问题的菱形。每根出发的箭头就是一个答案。

stateDiagram-v2
  [*] --> Check
  Check --> Decide <<choice>>
  Decide --> Accepted : if valid
  Decide --> Rejected : if invalid
一个起点通向标着 Check 的框,再通向标着 Decide 的菱形,后者分成 Accepted 和 Rejected。放大图表

状态里的状态

花括号打开一个复合状态。它的内部状态就住在里面。

stateDiagram-v2
  [*] --> Active
  state Active {
    [*] --> NumLockOff
    NumLockOff --> NumLockOn : press
    NumLockOn --> NumLockOff : press
  }
  Active --> [*]
一个叫 Active 的状态框,里面装着两个更小的状态 NumLockOff 和 NumLockOn,由一根带标签的箭头相连。放大图表

分叉与汇合

分叉把流拆开,汇合要等每一条分支都到齐。

stateDiagram-v2
  [*] --> Split <<fork>>
  Split --> A
  Split --> B
  A --> Merge <<join>>
  B --> Merge
  Merge --> [*]
一个起点通向一根横杠,横杠分成两支,两支都通向第二根横杠,再通向一个终点。放大图表

注释

注释挂在某个状态上,或者横跨两个状态浮着。

stateDiagram-v2
  [*] --> Draft
  Draft --> Review
  note right of Draft
    Still editable
  end note
一台状态机,Draft 状态右边挂着一个注释框。放大图表

方向

和流程图同一个关键字。默认自上而下。

stateDiagram-v2
  direction LR
  [*] --> Idle
  Idle --> Running : start
一个起点、一个 Idle 框和一个 Running 框,从左到右排开。放大图表

在 Mernyx 里画出来

打开一个 .mmd 文件,在画布上挪一个节点,源码跟着走。macOS 原生,不经过浏览器。

图表预览