在 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
因此该位提供了一种完全避免触发分派的方法。
我已经看到了三种不同的模式,替代文档没有明确区分。如果我有一个动作,我应该如何调用调度?以下是我见过的三种方式:
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
因此该位提供了一种完全避免触发分派的方法。