我们在 Angular 2 应用程序中使用 ngrx / store。我们的 store 是由 Reducers 组合而成的"cameraReducer", "subjectReducer"
……我们希望维护一些全局和通用(跨不同功能)项目,例如"appReducer"
.
{type:LOADING_*, payload}
在这样的场景中,共享一个像between individualReducers
and之类的动作有意义appReducer
吗?这应该在一个功能(可以被认为是一个单一的数据操作[使用单个 Reducer 和单个操作] 或多个相关数据操作 [使用多个 reducer 和多个操作])启动和关闭时打开一旦完成。appReducer 可能如下所示:
case LOADING_CAMERA:
LOADING_SUBJECT:
return state.setIn('loading') = true;
Adv - 没有样板。缺点 - 减速器的顺序将在指示器何时打开/关闭方面发挥作用。
或者
case LOADING:
return state.setIn('loading') = true;
我们可以在调用每个功能的开头/结尾处编写代码
this.store.dispatch({action:'LOADING', payload: true});
//functionality
this.store.dispatch({action:'LOADING', payload: false});
Adv - 指示器弹出/关闭的受控顺序。缺点 - 用于打开/关闭加载的样板代码。
或者
我们可以尝试将“loading”计算为组合的 observables(每个 reducer 都有自己的本地“loading”属性和该属性的 Observable)。
Adv - No Boilerplate 和 Controlled Order on 指示器开/关。缺点 - 增加的复杂性和更多的代码可能是。