Redux - 可以采取不影响状态的行动

时间:2016-04-29 04:51:55

标签: javascript reactjs frontend redux react-redux

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

e.g。

异步请求只响应HTTP代码200或404 ...

3 个答案:

答案 0 :(得分:3)

是。 它完全没问题。

如果您的商店写得很好,那么它只会返回之前的价值副本。

那就是说,发起一场毫无作用的事件是没有用的。

Redux教程建议分离动作,动作创建者以及通过动作调用动作创建者的人,正是因为您可以决定将哪些内容发送到商店;没有"点击此处获得50/50的机会我们将更新商店",因为它不再是功能方法的一部分。

答案 1 :(得分:1)

我会说"是的,没关系" - 虽然这是我的看法。

让您随时欢迎进一步扩展您的申请。例如,您可以使用以下内容:

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操作,您可能无意在您的Reducer中执行任何操作。

然后你意识到你需要一个动画加载器来显示。很简单,因为您已经采取了这些措施。显然有人认为添加你不需要的任何东西,但我认为对于像这样的普通作品来说它的开销很小。

答案 2 :(得分:0)

它的回应是什么?动作实际上只是设置Redux状态,如果你不需要设置状态,为什么要调用一个动作?在这种情况下,只需在组件中直接执行任何操作即可。