javascript - 全局转换到 "catch-all-do-cleanup-exit-nicely"状态

标签 javascript xstate

我有一个捕获所有错误状态,它可以为我的应用程序进行一些清理并很好地退出。

目前,我必须创建一个特定事件{type: "unexpected_error"},并向我的机器的每个状态添加一个转换来实现这一目标。

有没有一种更简单的方法可以为所有状态指定转换,这样我就不必将此转换添加到每个状态?

最佳答案

是的!您可以在顶级机器上放置转换。

const machine = Machine({
  // ...
  states: { /*...*/ },
  // top-level transition
  on: {
    "unexpected-error": { actions: /*...*/ }
  }
});

或者,由于它只是一个 JavaScript 对象,因此您可以创建一个辅助函数:

function transitionsWithErrorHandler(transitions) {
  return {
    ...transitions,
    "unexpected-error": { actions: /*...*/ }
  }
}

// ...
states: {
  foo: {
    on: transitionsWithErrorHandler({
      EVENT: 'bar',
      ANOTHER_EVENT: 'baz'
    })
  }
}

关于javascript - 全局转换到 "catch-all-do-cleanup-exit-nicely"状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981801/

相关文章:

javascript - 如何在 react 中保持 Xstate 状态机中的状态?

javascript - 正则表达式(或技术)从完整的歌曲名称中猜测艺术家?

javascript - 如何将 Base64 图像导出到 Excel?

javascript - 使用本地文件为网络音频加载 mp3 作为 ArrayBuffer

javascript - 更新firebase数据库中的相同值

javascript - 将 RGB 转换为 HEX 失败

reactjs - 在 xstate 中模拟调用的 promise

javascript - 使用 Context 的问题