在 Alt.js 中调用调度的不同方式?

Different ways to call dispatch in Alt.js?

我已经看到了三种不同的模式,替代文档没有明确区分。如果我有一个动作,我应该如何调用调度?以下是我见过的三种方式:

1. The action returns a function, which `dispatch` is passed into.

  addPayment(args) {
    return (dispatch) => {
      dispatch();
      // other action code
    };
  }

2. The action calls this.dispatch.

  addPayment(args) {
    this.dispatch();
    // other action code
  }

3. The action does not call dispatch.

  addPayment(args) {
    // other action code
  }

我不清楚这三个选项之间有什么区别,尤其不清楚选项 #3 是否调用调度。

bindActions 方法似乎将动作与动作处理程序相关联,因此在调用关联动作时自动调用给定的动作处理程序是有道理的,这将导致代码看起来像选项#3。但是,为什么我们需要显式调用 dispatch?

alt 没有标签,所以....是的。标记它 flux 因为这是最接近的匹配。

好的,据我所知,方法 #2 在 alt 的更高版本中被修补,现在会导致错误。

当您想在操作完成之前触发分派时,方法 1 工作正常。它通常在您有一个处理程序在 UI 中启动加载状态时使用,因此您希望在操作完成时将内容设置为加载。然后你有单独的 success/failure 动作(通常只是通过 alt 的 generateActions 生成)和它们自己的处理程序来处理 动作完成后发生的事情。

方法 3 适用于您希望在操作完成后触发分派。这是我错过的 alt 文档中的关键部分:

You can also simply return a value from an action to dispatch.

因此简单地返回一个值将调用调度,因此您的操作首先完成。 docs还赶紧补充:

There are two exceptions to this, however:

  • Returning false or undefined (or omitting return altogether) will not dispatch the action
  • Returning a Promise will not dispatch the action

因此该位提供了一种完全避免触发分派的方法。