如何在 NgRx 减速器中执行业务逻辑

问题描述

嗨,我在我的 angular 项目中使用 NgRx 存储进行状态管理。

我的目标是清除动作分派时的几个状态属性属性名称数组传递给操作。

// 动作

export const clearFields = createAction(
    '[SC Base Data] Clear Fields',props<{ fields: string[] }>()
);

// 减速器

on(SCActions.clearFields,(state: SCState,fields: string[]) => ({
        ...state,SCData: {
            ...state.SCData
        }
    })),

/ 如何迭代字段数组并将状态属性值设置为空白

解决方法

如果您所说的“空白”是指 null,我相信您正在寻找的是类似以下内容的内容:

on(SCActions.clearFields,(state: SCState,fields: string[]) => ({
  // create an Object whose keys are all elements of fields and every value is null
  const clearedState = {};
  fields.forEach(field => {
    clearedState[field] = null;
  });
  // return new copy of state nulling all fields from fields array
  return {
    ...state,...clearedState
  };
}))