[XState + Typescript] Type XState
import { assign, createMachine } from "xstate";
type FetchStates =
| {
value: "idle";
context: FetchContext & {
results: [];
message: "";
};
}
| { value: "pending"; context: FetchContext }
| {
value: "failed";
context: FetchContext & {
results: [];
message: "";
};
}
| {
value: "successful";
context: FetchContext & {
results: [];
message: "";
};
};
type FetchMachineEvents =
| { type: "FETCH" }
| { type: "RESOLVE"; results: any[] }
| { type: "REJECT"; message: string };
interface FetchContext {
results: any[];
message: string;
}
export default createMachine<FetchContext, FetchMachineEvents, FetchStates>(
{
predictableActionArguments: true,
id: "fetch",
initial: "idle",
context: {
results: [],
message: "",
},
states: {
idle: {
on: {
FETCH: "pending",
},
},
pending: {
entry: ["fetchData"],
on: {
RESOLVE: { target: "successful", actions: ["setResults"] },
REJECT: { target: "failed", actions: ["setMessage"] },
},
},
failed: {
on: {
FETCH: "pending",
},
},
successful: {
on: {
FETCH: "pending",
},
},
},
},
{
actions: {
setResults: assign((ctx, event: any) => ({
results: event.results,
})),
setMessage: assign((ctx, event: any) => ({
message: event.message,
})),
},
}
);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-11-23 [Tools] API Extractor Setup for Typescript
2015-11-23 [Protractor] Testing With Protractor Page Objects
2015-11-23 [Protractor] Test Simple Binding With Protractor
2015-11-23 [Angular 2] A Simple Form in Angular 2
2014-11-23 [ES6] 15. Generators -- 2
2014-11-23 [ES6] 14. Generator -- 1. yield & next()
2014-11-23 [ES6] 13. Using the ES6 spread operator ...