2

在 NGRX 库 ( https://ngrx.io/ ) 中,当创建一个包含数据的操作时,这些示例显示了一个payload为包含此数据而提供的参数。有没有理由我不能只提供有效负载作为参数?我可以找到的文档和所有示例都使用 apayload但没有真正解释原因。例如:

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)。有什么理由我不应该像后者那样做吗?

这也会使效果器和减速器变得更简单。

4

1 回答 1

1

你不必使用payload它只是一个约定。请参阅让我们聊聊 NgRx 中的动作和动作创建者

来自ngrx.io

该接口有一个属性,即type,表示为字符串。该type属性用于描述将在您的应用程序中调度的操作。类型的值以 of 的形式出现[Source] Event,用于提供它是什么类别的动作以及从哪里分派动作的上下文。您向操作添加属性以为操作提供额外的上下文或元数据。最常见的属性是payload,它添加操作所需的任何关联数据。

于 2019-04-05T16:23:20.820 回答