Угловая полезная нагрузка NGRX или без полезной нагрузки

В библиотеке NGRX (https://ngrx.io/) при создании действия, включающего данные, примеры показать аргумент payload, содержащий эти данные. Есть ли причина, по которой я не могу просто предоставить полезную нагрузку в качестве параметров? В документации и во всех примерах, которые я могу найти, используется payload, но нет реального объяснения почему. Например:

export class CreateEmployeeScheduleError implements Action {
readonly type = CREATE_EMPLOYEE_SCHEDULE_ERROR;
constructor(public payload: {
        error: string,
        requests: ScheduleCreateRequest[],
        requestsRemaining: number
}) {}
}

можно было бы записать как:

export class CreateEmployeeScheduleError implements Action {
readonly type = CREATE_EMPLOYEE_SCHEDULE_ERROR;
constructor(public error: string,
        public requests: ScheduleCreateRequest[],
        public requestsRemaining: number) {}
}

Это устраняет необходимость получения action.payload, а также необходимость во вспомогательной функции (map(toPayload)) и аналогично тому, как я видел другие структуры реализации redux (NGXS). Есть ли причина, по которой я не должен делать это в качестве последнего?

Это также изменило бы эффекты и редукторы, чтобы они были проще.


person Ryan Langton    schedule 05.04.2019    source источник
comment
Привет ! Очень хороший вопрос. Я сам использую параметр полезной нагрузки, но мой коллега не использует, и он работает для него ... Я не вижу сложностей при добавлении полезной нагрузки.   -  person Alain Boudard    schedule 05.04.2019
comment
полезная нагрузка - это просто слово ... вы можете использовать любое другое слово   -  person duardbr    schedule 05.04.2019
comment
@duardbr кажется бессмысленным упаковывать все в объект полезной нагрузки, когда он уже упакован в действие   -  person Ryan Langton    schedule 05.04.2019
comment
слово PAYLOAD - это просто имя для использования в качестве ПАРАМЕТРА ... его легко понять ... для передачи его от действия к эффектам и редукторам, используя то же слово myPARAM, PARAMETERS, PARAMS_ACCOUNT или просто полезную нагрузку.   -  person duardbr    schedule 05.04.2019
comment
@duardbr Вопрос не в полезной нагрузке словоблудия. Вопрос в том, зачем нам определять конструктор, подобный этому конструктору (общедоступная полезная нагрузка: {имя пользователя: строка; пароль: строка}) вместо этого конструктора (общедоступное имя пользователя: строка, общедоступный пароль: строка). В частности, превращение двух полей в анонимный объект вместо определения двух разных параметров   -  person heilch    schedule 13.04.2019


Ответы (1)


Необязательно использовать payload, это просто соглашение. См. Давайте попробуем поговорить о действиях и создателях действий в NgRx

Из ngrx.io

Интерфейс имеет единственное свойство type, представленное в виде строки. Свойство type предназначено для описания действия, которое будет отправлено в вашем приложении. Значение типа имеет форму [Source] Event и используется для предоставления контекста того, к какой категории действия это относится и откуда действие было отправлено. Вы добавляете свойства к действию, чтобы предоставить дополнительный контекст или метаданные для действия. Наиболее распространенным свойством является payload, которое добавляет любые связанные данные, необходимые для действия.

person timdeschryver    schedule 05.04.2019