0

我有一个减速器,它当前存储状态为product. 我有当前的状态结构:

{
    draft: {},
    loading: false,
    error: false
}

我的问题是当用户创建/删除产品时如何支持处理错误?我不想使用相同的loading/error属性来获取 / 创建 / 删除 - 它们可能需要同时发生。我最好创建单独的减速器,例如createProductReducer// ,或者可能将错误/加载到他们自己的deleteProductReducer/ 'loadingReducer`中?getProductReducererrorReducer

4

1 回答 1

1

作为一个基本的经验法则:reduce 不包含任何逻辑并且包含(在大多数情况下)语义相关的数据。

简而言之:我不建议您将您的productReducer分成多个减速器。

其次,我建议您重新考虑数据流,如果您真的需要将一次性事件(在您的情况下为错误)作为应用程序状态的一部分。在大多数情况下,这不是必需的。

这是我通常的处理方式:

错误:任何外部操作(REST、db-calls 等)都是通过调用服务方法的效果来完成的。如果发生错误——效果返回一个动作(例如ERROR_ACTION),它只由某些根组件处理以显示错误(通过actions$.ofType(ERROR_ACTION)...)——没有减速器或效果监听这个动作(除非涉及一些日志服务)。

加载:有一个 reducer ( uiReducer),它有一个加载计数器(加载事件开始:+1;加载事件完成/错误:-1),并且只要计数大于,根组件(加载指示器)就可见0。

于 2017-03-27T10:54:48.687 回答