用途:把 UI 组件和流程建模为有限状态机,消除不可能状态,使交互行为可预测、可测试,并提供设计与工程共享的描述语言。
主要能力与组成:状态是 UI 可处的不同模式(idle、loading、success、error);事件是触发转换的因素(click、submit、timeout、response);转换定义规则(在状态 A 收到事件 X 则进入状态 B);动作是转换期间的副作用(fetch 数据、显示 toast、记录事件);守卫是转换必须满足的条件(isValid、hasPermission)。
常见 UI 状态机:表单 idle -> editing -> validating -> submitting -> success/error -> idle;数据获取 idle -> loading -> success/error,error -> retrying -> success/error;认证 logged-out -> authenticating -> logged-in -> logging-out -> logged-out;多步向导 step1 -> step2 -> step3 -> review -> submitting -> complete。
建模方法:列出所有可能状态;列出所有事件/触发条件;定义有效转换;识别要防止的不可能状态;为条件转换添加守卫;定义每个状态的进入/退出动作。
优点:消除不可能状态(不会同时 loading 与 error);让边界情况可见;设计与工程共享语言;形成可测试的行为规格。
最佳实践:先走通主路径,再添加错误状态;每个状态都应有出路,避免死胡同;保持状态机聚焦(一个关注点一个状态机);用可视化图记录;把每个状态映射到 UI 呈现。
限制:资料未提供具体实现库、代码示例、平台支持、收费或价格信息。