跳转到内容

数据请求 Data Fetch

模拟带重试的数据请求:idle → fetching → success,失败时用 @ActionState 体现重试中间态。

状态图

stateDiagram-v2
[*] --> resetting : reset
resetting --> idle : reset 🟢
resetting --> [*] : reset 🔴
idle --> fetching : fetch
fetching --> success : fetch 🟢
fetching --> idle : fetch 🔴

注意:@ActionState('retrying') 不会出现在状态图里——它是瞬态操作。

关键点

  • @ChangeState('idle', 'success') — 主请求迁移
  • @ActionState('retrying') — 重试等待期间的瞬态状态,结束后回到原状态
  • 失败时递归重试,直到达到 maxRetries

@ActionState 的作用

重试等待期间,状态会临时变成 retrying,让 UI 可以显示「重试中」指示;等待结束后自动回到原状态(idlesuccess 之前的状态)。这避免了在状态图里引入「重试等待」这种非正式节点。

调参

  • 失败率 — 观察重试行为
  • 最大重试次数 — 控制重试上限

启示

@ActionState 适合描述「保存中」「上传中」「重试中」这类瞬态动作,而 @ChangeState 描述状态机的正式节点。