如何在 getReducers():ActionReducerMap<fromFeature.State> 中返回 reducer 映射?

Posted

技术标签:

【中文标题】如何在 getReducers():ActionReducerMap<fromFeature.State> 中返回 reducer 映射?【英文标题】:How to return a map of reducers in getReducers(): ActionReducerMap<fromFeature.State>? 【发布时间】:2018-04-02 08:13:33 【问题描述】:

我正在尝试在通过 NgRx 功能模块组合状态时注入 功能缩减器

import  NgModule, InjectionToken  from '@angular/core';
import  StoreModule, ActionReducerMap  from '@ngrx/store';

import * as fromFeature from './reducers';

export const FEATURE_REDUCER_TOKEN = new InjectionToken<ActionReducerMap<fromFeature.State>>('Feature Reducers');

我应该在这里返回什么?

export function getReducers(): ActionReducerMap<fromFeature.State> 
  // map of reducers
  return 
  
  ;

我试过了

export function getReducers(): ActionReducerMap<fromFeature.State> 
      // map of reducers
      return 
          reducerA: FeatureAReducer
      ;
    

但它给出了错误对象字面量只能指定已知属性

其余模块代码:

@NgModule(
  imports: [
    StoreModule.forFeature('feature', FEATURE_REDUCER_TOKEN),
  ],
  providers: [
    
      provide: FEATURE_REDUCER_TOKEN,
      useFactory: getReducers
    
  ]
)
export class FeatureModule  

【问题讨论】:

您是否计划基于该功能拥有多个StoreModule 我有多个特性和他们自己的减速器。 @vulp 你的问题已经有一段时间了,但我很感兴趣你为什么要注入减速器?其背后的意图/原因是什么?如果你能把它弄清楚就好了(不幸的是,我在互联网上找不到任何东西,所以我正在寻找可以向我解释的开发人员)。提前致谢。 【参考方案1】:

我认为每个reducer,无论是root还是feature reducer,都会返回一个新的状态对象。但实际上并没有。特征 reducer 的作用是只返回它更新的状态段。

来自ngrx/platform/example-app:

我们将每个reducer 视为数据库中的一个表。这意味着我们的 ***状态接口只是内部状态类型的键映射。

【讨论】:

以上是关于如何在 getReducers():ActionReducerMap<fromFeature.State> 中返回 reducer 映射?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我为方法'ActionResult DisplaySearchResults()的不可空类型'System.Int32'的参数'CarLotID'获得空条目

如何在图像中找到明亮区域(以及如何在图像中找到阴影区域)

在QGIS中如何添加天地图的WMTS

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”