首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以将对象及其方法存储在@ngrx中吗?

可以将对象及其方法存储在@ngrx中吗?
EN

Stack Overflow用户
提问于 2018-12-04 13:05:49
回答 1查看 3K关注 0票数 13

我想用@ngrx/entity来存储对象及其方法。在应用上会否出现问题?(角2-7)

mission.class.ts:

代码语言:javascript
复制
import { v4 as uuid} from 'uuid';

export class Mission {

  id: string;
  title: string;
  completed: boolean;

  constructor (missionTitle: string, completed?: boolean) {
    this.id = uuid();
    this.title = missionTitle;
    this.completed = completed;
  }

  complete() {
    this.completed = true;
  }
}

有一个有方法“完成”任务的班级。我想通过@ngrx/entity保存它。

missions.actions.ts:

代码语言:javascript
复制
export enum MissionActionTypes {
  AddMission = '[Mission] Add Mission'      
}

export class AddMission implements Action {
  readonly type = MissionActionTypes.AddMission;

  constructor (public payload: { mission: Mission }) {}
}

将任务对象及其方法添加到@ngrx/store的操作

missions.reducer.ts:

代码语言:javascript
复制
export interface MissionsState extends EntityState <Mission> {

}

export const adapter: EntityAdapter <Mission> = createEntityAdapter<Mission>();

export const initialState: MissionsState = adapter.getInitialState();

export function reducer(state = initialState, actions: MissionActions) {

  switch (actions.type) {
  
    case MissionActionTypes.AddMission:
      return adapter.addOne(actions.payload.mission, state);
      
    default: 
      return state;
  }

}

当我使用select()从商店中获取任务对象时,我可以调用它的“完全”方法。但我不确定这种方法将来是否会在应用程序中造成任何问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-05 17:26:20

是的,这是可能的,但这并不意味着你应该这么做。

  • 操作应该是可序列化的(方法在序列化过程中丢失)
  • 选择器应该是纯的(它不应该调用副作用,它应该只从状态读取日期)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53613672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档