xstate by seed-hypermedia/seed
npx skills add https://github.com/seed-hypermedia/seed --skill xstate重要提示:此技能仅涵盖 XState v5。 请勿使用 v4 的模式、API 或文档。XState v5 需要 TypeScript 5.0+。
setup、createMachine、createActor)Actor 是通过发送消息进行通信的独立实体。XState v5 支持:
| Actor 类型 | 创建函数 | 用例 |
|---|---|---|
| 状态机 | createMachine() | 具有转换的复杂状态逻辑 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| Promise | fromPromise() | 异步操作(fetch、计时器) |
| 回调 | fromCallback() | 双向流(WebSocket、EventSource) |
| 可观察对象 | fromObservable() | RxJS 流 |
| 转换 | fromTransition() | 类似 Reducer 的状态更新 |
import { setup, assign, createActor } from 'xstate';
const machine = setup({
types: {
context: {} as { count: number },
events: {} as { type: 'increment' } | { type: 'decrement' },
},
actions: {
increment: assign({ count: ({ context }) => context.count + 1 }),
decrement: assign({ count: ({ context }) => context.count - 1 }),
},
}).createMachine({
id: 'counter',
initial: 'active',
context: { count: 0 },
states: {
active: {
on: {
increment: { actions: 'increment' },
decrement: { actions: 'decrement' },
},
},
},
});
// 创建并启动 actor
const actor = createActor(machine);
actor.subscribe((snapshot) => console.log(snapshot.context.count));
actor.start();
actor.send({ type: 'increment' });
| v4(错误) | v5(正确) |
|---|---|
单独的 createMachine() | setup().createMachine() |
interpret() | createActor() |
service.start() | actor.start() |
state.matches() | snapshot.matches() |
services: {} | actors: {} |
state.context | snapshot.context |
const actor = createActor(machine, {
inspect: (event) => {
if (event.type === '@xstate.snapshot') {
console.log(event.snapshot);
}
},
});
事件类型:@xstate.actor、@xstate.event、@xstate.snapshot、@xstate.microstep
feature/
├── feature.machine.ts # 状态机定义
├── feature.types.ts # 共享类型(可选)
├── feature.tsx # React 组件
└── feature.test.ts # 状态机测试
| 级别 | 重点 |
|---|---|
| 初级 | 计数器、切换开关状态机;setup() 模式 |
| 中级 | 守卫、动作、分层状态、fromPromise() |
| 高级 | 可观察 Actor、spawn、Actor 编排 |
useMachine、useActor、useSelector)每周安装量
170
代码仓库
GitHub 星标数
50
首次出现
2026年1月31日
安全审计
安装于
codex162
opencode159
gemini-cli158
github-copilot156
amp148
kimi-cli148
CRITICAL: This skill covers XState v5 ONLY. Do not use v4 patterns, APIs, or documentation. XState v5 requires TypeScript 5.0+.
setup, createMachine, createActor)Actors are independent entities that communicate by sending messages. XState v5 supports:
| Actor Type | Creator | Use Case |
|---|---|---|
| State Machine | createMachine() | Complex state logic with transitions |
| Promise | fromPromise() | Async operations (fetch, timers) |
| Callback | fromCallback() | Bidirectional streams (WebSocket, EventSource) |
| Observable | fromObservable() | RxJS streams |
| Transition | fromTransition() | Reducer-like state updates |
import { setup, assign, createActor } from 'xstate';
const machine = setup({
types: {
context: {} as { count: number },
events: {} as { type: 'increment' } | { type: 'decrement' },
},
actions: {
increment: assign({ count: ({ context }) => context.count + 1 }),
decrement: assign({ count: ({ context }) => context.count - 1 }),
},
}).createMachine({
id: 'counter',
initial: 'active',
context: { count: 0 },
states: {
active: {
on: {
increment: { actions: 'increment' },
decrement: { actions: 'decrement' },
},
},
},
});
// Create and start actor
const actor = createActor(machine);
actor.subscribe((snapshot) => console.log(snapshot.context.count));
actor.start();
actor.send({ type: 'increment' });
| v4 (WRONG) | v5 (CORRECT) |
|---|---|
createMachine() alone | setup().createMachine() |
interpret() | createActor() |
service.start() | actor.start() |
state.matches() | snapshot.matches() |
const actor = createActor(machine, {
inspect: (event) => {
if (event.type === '@xstate.snapshot') {
console.log(event.snapshot);
}
},
});
Event types: @xstate.actor, @xstate.event, @xstate.snapshot, @xstate.microstep
feature/
├── feature.machine.ts # Machine definition
├── feature.types.ts # Shared types (optional)
├── feature.tsx # React component
└── feature.test.ts # Machine tests
| Level | Focus |
|---|---|
| Beginner | Counter, toggle machines; setup() pattern |
| Intermediate | Guards, actions, hierarchical states, fromPromise() |
| Advanced | Observable actors, spawning, actor orchestration |
useMachine, useActor, useSelector)Weekly Installs
170
Repository
GitHub Stars
50
First Seen
Jan 31, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex162
opencode159
gemini-cli158
github-copilot156
amp148
kimi-cli148
Flutter应用架构设计指南:分层结构、数据层实现与最佳实践
4,400 周安装
deslop AI代码清理工具 - 自动移除冗余AI生成代码,提升代码质量
199 周安装
TypeScript核心开发模式2025:类型安全、运行时验证与最佳配置指南
154 周安装
渗透测试专家指南:Web应用、云与网络漏洞评估、渗透测试方法及工具
160 周安装
ClawdStrike 安全审计工具 - OpenClaw 配置错误与攻击路径检测
432 周安装
AI智能体WebSearch网络搜索技能:无需API密钥,实时获取最新网络信息
437 周安装
Jest React测试教程:React Testing Library单元测试与集成测试完整指南
443 周安装
services: {} | actors: {} |
state.context | snapshot.context |