Actions

Redux使用一个称为Actions的概念,它描述了对应用程序的状态更改。 Redux actions 是实现@ngrx提供的Action接口的简单JSON对象:

  1. export interface Action {
  2. type: string;
  3. payload?: any;
  4. }

type属性是用于标识您的应用程序的操作的唯一字符串。 使用lisp-case(例如MY_ACTION)是一个常见的惯例,但是只要在整个项目中是一致的,您可以随意使用任何写法。

payload 属性提供了一种将附加数据传递到Redux的其他部分的方法,它是完全可选的。

示例:

  1. const loginSendAction: Action = {
  2. type: 'LOGIN_SEND',
  3. payload: {
  4. username: 'katie',
  5. password: '35c0cd1ecbbb68c75498b83c4e79fe2b'
  6. }
  7. };

使用平面对象,使得动作是可序列化的,并且可以重播到应用程序状态。 即使您的操作涉及异步逻辑,最终的分派操作仍将是一个简单的JSON对象。

为了简化操作创建,您可以创建一个工厂函数来处理应用程序中重复的部分:

app/store/createAction.ts

  1. import {Action} from '@ngrx/store';
  2. export function createAction(type, payload?): Action {
  3. return { type, payload };
  4. }

由此产生的LOGIN_SEND创建操作变得更加简洁和干净:

  1. const loginSendAction: Action = createAction('LOGIN_SEND', {
  2. username: 'katie',
  3. password: '35c0cd1ecbbb68c75498b83c4e79fe2b'
  4. });