2

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

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

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

4

1 回答 1

3

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

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'
    })
  }
}
于 2019-07-15T03:30:58.977 回答