Нормально ли иметь много действий в ngrx? - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь реализовать ngrx, и у меня есть несколько вызовов API. Для каждого из них наилучшей практикой, по-видимому, является добавление успеха и неудачи, чтобы мой эффект распределял точное вспомогательное действие. но файл действий уже очень большой, и это всего лишь 6 вызовов ...

import { HttpErrorResponse } from '@angular/common/http';
import { Action } from '@ngrx/store';
import { IOrganization } from './organization.models';

export enum ActionTypes {
  GetOrganizationsRequest = '[Organizations] Get Organizations Request',
  GetOrganizationsSuccess = '[Organizations] Get Organizations Success',
  GetOrganizationsFailed = '[Organizations] Get Organizations Failed',

  PostOrganizationsRequest = '[Organizations] Post Organizations Request',
  PostOrganizationsSuccess = '[Organizations] Post Organizations Success',
  PostOrganizationsFailed = '[Organizations] Post Organizations Failed',

  UpdateOrganizationRequest = '[Organizations] Update Organizations Request',
  UpdateOrganizationSuccess = '[Organizations] Update Organizations Success',
  UpdateOrganizationFailed = '[Organizations] Update Organizations Failed',


  RefreshOrganizationRequest = '[Organizations] Refresh Organizations Request',
  RefreshOrganizationSuccess = '[Organizations] Refresh Organizations Success',
  RefreshOrganizationFailed = '[Organizations] Refresh Organizations Failed',

  DeleteOrganizationRequest = '[Organizations] Delete Organizations Request',
  DeleteOrganizationSuccess = '[Organizations] Delete Organizations Success',
  DeleteOrganizationFailed = '[Organizations] Delete Organizations Failed',

  GetOrganizationsUsersRequest = '[Organizations] Get Users Organizations Request',
  GetOrganizationsUsersSuccess = '[Organizations] Get Users Organizations Success',
  GetOrganizationsUsersFailed = '[Organizations] Get Users Organizations Failed',

}

export class GetOrganizationsRequest implements Action {
  public readonly type = ActionTypes.GetOrganizationsRequest;
  constructor() {}
}

export class GetOrganizationsSuccess implements Action {
  public readonly type = ActionTypes.GetOrganizationsSuccess;
  constructor(public payload: {organization: Array<IOrganization>}) {}
}

export class GetOrganizationsFailed implements Action {
  public readonly type = ActionTypes.GetOrganizationsFailed;
  constructor(public payload: {error: HttpErrorResponse}) {}
}

export class PostOrganizationsRequest implements Action {
  public readonly type = ActionTypes.PostOrganizationsRequest;
  constructor(public payload: {organization: IOrganization}) {}
}

export class PostOrganizationsSuccess implements Action {
  public readonly type = ActionTypes.PostOrganizationsSuccess;
  constructor(public payload: {response: any}) {}
}

export class PostOrganizationsFailed implements Action {
  public readonly type = ActionTypes.PostOrganizationsFailed;
  constructor(public payload: {error: HttpErrorResponse}) {}
}


export class UpdateOrganizationRequest implements Action {
  public readonly type = ActionTypes.GetOrganizationsRequest;
  constructor(public payload: {organizationId: string, organization: IOrganization}) {}
}

export class UpdateOrganizationSuccess implements Action {
  public readonly type = ActionTypes.UpdateOrganizationSuccess;
  constructor(public payload: {response: any}) {}
}

export class UpdateOrganizationFailed implements Action {
  public readonly type = ActionTypes.UpdateOrganizationFailed;
  constructor(public payload: {error: HttpErrorResponse}) {}
}

export class RefreshOrganizationRequest implements Action {
  public readonly type = ActionTypes.RefreshOrganizationRequest;
  constructor(public payload: {organizationId: string}) {}
}

export class RefreshOrganizationSuccess implements Action {
  public readonly type = ActionTypes.RefreshOrganizationSuccess;
  constructor(public payload: {response: any}) {}
}

export class RefreshOrganizationFailed implements Action {
  public readonly type = ActionTypes.RefreshOrganizationFailed;
  constructor(public payload: {error: HttpErrorResponse}) {}
}

export class DeleteOrganizationRequest implements Action {
  public readonly type = ActionTypes.DeleteOrganizationRequest;
  constructor(public payload: {organizationId: string}) {}
}

export class DeleteOrganizationSuccess implements Action {
  public readonly type = ActionTypes.DeleteOrganizationSuccess;
  constructor(public payload: {response: any}) {}
}

export class DeleteOrganizationFailed implements Action {
  public readonly type = ActionTypes.DeleteOrganizationFailed;
  constructor(public payload: {error: HttpErrorResponse}) {}
}


export class GetOrganizationsUsersRequest implements Action {
  public readonly type = ActionTypes.GetOrganizationsUsersRequest;
  constructor(public payload: {organizationId: string}) {}
}

export class GetOrganizationsUsersSuccess implements Action {
  public readonly type = ActionTypes.GetOrganizationsUsersSuccess;
  constructor(public payload: {response: any}) {}
}

export class GetOrganizationsUsersFailed implements Action {
  public readonly type = ActionTypes.GetOrganizationsUsersFailed;
  constructor(public payload: {error: HttpErrorResponse}) {}
}

export type Actions =   GetOrganizationsRequest |
                        GetOrganizationsSuccess |
                        GetOrganizationsFailed |
                        PostOrganizationsRequest |
                        PostOrganizationsSuccess |
                        PostOrganizationsFailed |
                        UpdateOrganizationRequest |
                        UpdateOrganizationSuccess |
                        UpdateOrganizationFailed |
                        RefreshOrganizationRequest |
                        RefreshOrganizationSuccess  |
                        RefreshOrganizationFailed |
                        DeleteOrganizationRequest |
                        DeleteOrganizationSuccess  |
                        DeleteOrganizationFailed  |
                        GetOrganizationsUsersRequest |
                        GetOrganizationsUsersSuccess |
                        GetOrganizationsUsersFailed;

Сколько действий содержит большое угловое приложение, не правда ли?

1 Ответ

0 голосов
/ 29 мая 2019

Да, это "нормально". Главным образом потому, что действие описывает уникальное событие в вашем приложении. Начиная с NgRx, часть этого кода станет меньше (но основные принципы останутся) с createAction и createReducer.

Кроме того, есть @ngrx/entity и @ngrx/data (или ngrx-data pre v8), чтобы избавиться от части этого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...