用途:在 React 与 TypeScript 项目中使用 XState v5 的 Actor 状态管理,处理复杂 UI 流程与多状态逻辑。适合多步骤表单、向导、结算流程、含大量转换与边界情况的状态、需要可视化验证的逻辑、带异步与错误处理的过程,以及 loading/error/success/idle 等多模式状态。简单的开关、计数器、单组件表单状态或普通 CRUD 加载状态,建议改用 useState、Zustand 等更简单方案。
主要能力:以 createMachine 定义状态与转换,用 context 保存扩展数据,用 assign 更新上下文,用 setup() 定义类型安全的 actions、guards、actors 与 delays;支持守卫条件转换、final 状态、invoke 异步操作等。React 侧提供 useMachine 在组件生命周期内创建并运行机器;useActor 订阅组件外创建的 Actor;useSelector 按需选取状态以减少重渲染。可用 state.matches() 检查层级状态,或用 state.value 判断当前状态。
使用方式:安装并引入 xstate 与 @xstate/react;在客户端组件顶部添加 "use client";用 useMachine(machine) 取得 [state, send],通过 send({ type: "EVENT_NAME" }) 发送事件;用 assign 更新 context,不要直接修改;类型可用 types 属性或 setup() 声明。更完整的 invoke/spawn、并行与历史状态、Actor 通信和测试策略,可参考 /statelyai/xstate 文档及本地 patterns 参考。
限制:hooks 必须运行于客户端组件;不得把整个快照存入 React 状态或直接变更 context;资料未提供收费、价格与平台支持信息。