一个基于 Hook 的轻量 React 状态管理库,无需包裹 Provider。
- Star
- 30,412
- Fork
- 1,410
- 未关闭 Issue
- 123
- 最近提交
- 20小时前
这是什么?
XState 是一个面向 JavaScript 和 TypeScript 的状态管理与编排库,可用于前端和后端代码。它把应用逻辑建模为状态机、状态图和 Actor,让状态转换、副作用和允许的事件都有明确声明,而不是散落在各处的条件判断中。
核心包 xstate 提供状态机定义、运行机器逻辑并向订阅者暴露快照的 Actor,同时支持层级状态、并行状态和历史状态。可视化编辑器 Stately Studio 可用于设计状态机,并导出为 XState v5 代码。配套包提供 React、Vue、Svelte 和 Solid 的绑定。
对于更简单的场景,独立的 @xstate/store 包提供基于事件的小型状态仓库,支持响应式 atom 和出色的 TypeScript 类型推断,可以单独使用,也可以与核心库配合。
核心功能
- 01使用层级状态、并行状态和历史状态定义状态机与状态图。
- 02以 Actor 运行逻辑,并向订阅者暴露状态快照。
- 03没有运行时依赖。
- 04通过 Stately Studio 进行可视化设计并导出代码。
- 05提供 React、Vue、Svelte 和 Solid 的框架绑定。
- 06提供独立的轻量级 @xstate/store,用于基于事件的状态管理。
适用场景
- 管理表单、向导或结账等多步骤界面流程。
- 编排长时间运行的后端工作流和后台任务。
- 让复杂组件的状态转换明确且便于测试。
- 用小型事件驱动仓库替代 Redux 或 Zustand 等方案。
快速上手
- 1
使用 npm 安装 xstate 包
npm install xstate
收录于专题
标签
#state-machine#statecharts#state-management#actor-model#typescript#workflow#orchestration#frontend#background-jobs#finite-state-machine
常见问题
- xstate 是什么?
- 零依赖的 JavaScript/TypeScript 库,用状态机、状态图和 Actor 管理复杂的应用与工作流逻辑。 XState 是一个面向 JavaScript 和 TypeScript 的状态管理与编排库,可用于前端和后端代码。它把应用逻辑建模为状态机、状态图和 Actor,让状态转换、副作用和允许的事件都有明确声明,而不是散落在各处的条件判断中。
- xstate 可以免费使用吗?用的什么许可证?
- xstate 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- xstate 还在维护吗?
- 活跃维护中。xstate 最近一次提交是在 2026年11月6日。
- xstate 适合用来做什么?
- 管理表单、向导或结账等多步骤界面流程。 编排长时间运行的后端工作流和后台任务。 让复杂组件的状态转换明确且便于测试。 用小型事件驱动仓库替代 Redux 或 Zustand 等方案。
- xstate 怎么安装和运行?
- 使用 npm 安装 xstate 包: npm install xstate
- 在哪里获取 xstate?
- 源代码和安装说明在 GitHub 上:https://github.com/statelyai/xstate
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
5.9万+14 本周2191TypeScriptMIT维护活跃更新于 21小时前
一个用于可预测、可维护的全局状态管理的 JavaScript 库,可与 React 或其他视图库搭配使用。
6.1万1.5万TypeScriptMIT更新于 18天前
面向 JavaScript 和 TypeScript 应用的简洁、可扩展状态管理库,自动追踪依赖。
2.8万1810TypeScriptMIT维护活跃更新于 21小时前
Redux 官方的 React 绑定库,通过 Provider 和 Hooks 将 Redux 状态连接到 React 组件。
2.3万+1 本周3319TypeScriptMIT更新于 10天前
通过 TypeScript 状态机、CLI 和 MCP 服务强制执行 SPARC 五阶段的证据门控工程流程。
47991TypeScriptApache-2.0更新于 7天前
一个 Python 库,用于将聊天机器人、智能体等决策型应用构建为状态机,并提供实时追踪监控界面。
2596+10 本周218PythonApache-2.0维护活跃更新于 昨天