Javascript 如何用单个操作删除每个减速器中的状态

Javascript 如何用单个操作删除每个减速器中的状态,javascript,angular,reducers,ngrx-store,Javascript,Angular,Reducers,Ngrx Store,我有10个减速机,我想删除每个减速机中的状态值 单击一次,我如何实现这一点?您可以创建这样的metaReducer export function clearData(reducer: ActionReducer<any>): ActionReducer<any> { return function (state, action) { switch (action.type) { case CLEAR_DATA:

我有10个减速机,我想删除每个减速机中的状态值
单击一次,我如何实现这一点?

您可以创建这样的metaReducer

export function clearData(reducer: ActionReducer<any>): ActionReducer<any> {
    return function (state, action) {

        switch (action.type) {
            case CLEAR_DATA:
                state = undefined;
        }

        return reducer(state, action);
    };
}
导出函数clearData(reducer:ActionReducer):ActionReducer{
返回函数(状态、动作){
开关(动作类型){
案例清除数据:
状态=未定义;
}
返回减速器(状态、动作);
};
}

并将其包含在您的MetaReducer数组中,该数组最终将提供给功能模块中的StoreModule Initialization。

我认为重置历史记录最直接的方法是创建一个10个还原器侦听的操作,当该操作发生时,它们会相应地重置其状态。以下是一个例子:

class ResetState extends Action {
  readonly type = "RESET_STATE"
}
减速器1

function reducer1(state, action){
  switch(action.type) {
    case "RESET_STATE":
      return {};
  }
}
减速器2

function reducer2(state, action){
  switch(action.type) {
    case "RESET_STATE":
      return {
        someCount: 0,
        someArray: [],
        someBoolean: false,
      };
  }
}

你试过什么吗?