Action Types

Beyond creators, you also receive an object named types when you call createActions. This object contains all the respective types for your actions.

Given the following config:

const { types } = createActions('myNamespace', {
  list: { url: 'todo', method: 'get' },
  update: { url: 'todo/:id', method: 'put' },
  reset: null,
});

Your action types would look exactly like this:

{
  LIST: {
    REQUEST: 'MY_NAMESPACE_LIST_REQUEST',
    RESPONSE: 'MY_NAMESPACE_LIST_RESPONSE',
  },
  UPDATE: {
    REQUEST: 'MY_NAMESPACE_UPDATE_REQUEST',
    RESPONSE: 'MY_NAMESPACE_UPDATE_RESPONSE',
  },
  RESET: 'MY_NAMESPACE_RESET',
};

Considering the code above, to get the type for your list response action, you could do the following:

  types.LIST.RESPONSE // MY_NAMESPACE_LIST_RESPONSE

The logic we use to define the types, is basically:

Convert the action name to Upper Case, splitting words by underscore _ and use it as the root keys of our action types object:

  // list -> LIST
  {
    LIST,
    UPDATE,
    RESET,
  }

For async types, we add the keys REQUEST and RESPONSE to all types objects:

  // list ->
  {
    LIST: {
      REQUEST,
      RESPONSE,
    },
    UPDATE: {
      REQUEST,
      RESPONSE,
    },
    RESET,
  }

The final value for the action type, begins with the namespace uppercased, followed by the action name uppercased. For Async Actions, we append respectively, the words REQUEST and RESPONSE).

  myNamespace -> MY_NAMESPACE
  list -> LIST
  reset -> RESET

  MY_NAMESPACE_LIST_REQUEST
  MY_NAMESPACE_LIST_RESPONSE

  MY_NAMESPACE_RESET

results matching ""

    No results matching ""