Redux - 可以执行不影响状态的操作吗

Redux - Is it okay to have actions that don't effect the sate

可以在 Redux 状态树中执行不影响任何操作的操作吗?

例如

仅使用 HTTP 代码 200 或 404 响应的异步请求 ...

它有什么反应?动作真的只是设置 Redux 状态,如果你不需要设置状态,你为什么要调用动作?在这种情况下,只需直接在您的组件中执行您必须执行的任何操作即可。

我会说 "yes, it's ok" - 虽然那是我的意见。

它让您对进一步扩展您的应用程序持开放态度。例如,你可以有这样的东西:

export function fetch(sysId:string) {
    return function(dispatch:Function) {
        dispatch(fetching());

        $.ajax(...)
            .fail(e => dispatch(failed()))
            .done(data => dispatch(fetched(data)));
    }
}

export function failed() {
    return { type: 'SERVER/FAILED' };
}

export function fetching() {
    return { type: 'SERVER/FETCHING' };
}

export function fetched(data:Object) {
    return { type: 'SERVER/FETCHED', data };
}

目前,您可能对在减速器中为 failedfetching 操作做任何事情的意图为零。

然后你意识到你需要一个动画加载器来显示。很简单,因为您已准备好这些操作。显然,not 添加任何你不需要的东西是有争议的,但我认为对于像这样的常见部分来说,它的开销很小。

是的。 完全没问题。

如果你的商店写得好,它几乎只是 return 它以前的值的副本。

也就是说,触发一个什么都不做的事件是毫无用处的。

Redux 教程建议将动作、动作创建者和用动作调用动作创建者的人分开的原因正是为了让您可以决定将什么发送到商店;没有"click here for a 50/50 chance we're going to update the store",因为它不再是函数方法的一部分。