【发布时间】:2016-04-29 04:51:54
【问题描述】:
可以在 Redux 状态树中设置不影响任何内容的操作吗?
例如
一个异步请求只响应 HTTP 代码 200 或 404 ...
【问题讨论】:
-
事件200、404是状态变化(错误处理)
标签: javascript reactjs frontend redux react-redux
可以在 Redux 状态树中设置不影响任何内容的操作吗?
例如
一个异步请求只响应 HTTP 代码 200 或 404 ...
【问题讨论】:
标签: javascript reactjs frontend redux react-redux
是的。 完全没问题。
如果你的商店写得很好,它几乎只是返回它之前的值的副本。
也就是说,触发一个完全不执行任何操作的事件是毫无用处的。
Redux 教程建议将动作、动作创建者和使用动作调用动作创建者的人分开的原因正是为了让您可以决定将什么发送到商店;没有“单击此处获得 50/50 的机会我们将更新商店”,因为它不再是函数方法的一部分。
【讨论】:
我会说“是的,没关系”——尽管这是我的看法。
它让您可以进一步扩展您的应用程序。例如,你可以有类似的东西:
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 };
}
目前,对于 failed 或 fetching 操作,您可能零打算在减速器中执行任何操作。
然后你意识到你需要一个动画加载器来显示。很简单,因为您已经完成了这些操作。显然,有理由 not 添加任何你不需要的东西,但我认为对于像这样的常见部分来说,它的开销很小。
【讨论】:
它的响应是什么? Actions 真的只是设置 Redux 状态,如果你不需要设置状态,你为什么要调用一个动作?在这种情况下,只需直接在组件中执行您必须执行的任何操作即可。
【讨论】: