Defaults

The library expose some functions:

import {
    overrideDefaultTypeSuffixes,
    overrideGenerateInitialState,
    overrideGenerateReducer,
    overrideActionTransformer,
} from 'redux-autoreducers'

overrideDefaultTypeSuffixes

Description: Function to change default type suffixes.

Defaults are: PENDING, FULFILLED, REJECTED.

Params:

Param Type Required
newDefaultTypeSuffixes Object True

Example:

overrideDefaultTypeSuffixes({
    PENDING: 'PENDING',
    FULFILLED: 'FULFILLED',
    REJECTED: 'REJECTED',
})

overrideGenerateReducer

Description: Function to change default reducer generator.

Params:

Param Type Required
newGenerateReducer Function True

newGenerateReducer have these params:

Param Type Description Required Schema
type String Rule type (example: 'GET_ALL') True String
lowerCamelCaseType String Rule in lower camel case (example: 'getAll') True String
typeSuffixes Object Type suffixes True for example { PENDING: String, FULFILLED: String, REJECTED: String }

newGenerateReducer must return an object that have schema of https://github.com/tomatau/type-to-reducer.

Example of code (default code):

overrideGenerateReducer((type, lowerCamelCaseType, typeSuffixes) => ({
    [type]: {
        [typeSuffixes.PENDING]: state => ({
            ...state,
            [`is${capitalize(lowerCamelCaseType)}Pending`]: true,
            [`${lowerCamelCaseType}Data`]: null,
            [`${lowerCamelCaseType}Error`]: null,
        }),
        [typeSuffixes.FULFILLED]: (state, action) => ({
            ...state,
            [`is${capitalize(lowerCamelCaseType)}Pending`]: false,
            [`${lowerCamelCaseType}Data`]: action.data,
            [`${lowerCamelCaseType}Error`]: null,
        }),
        [typeSuffixes.REJECTED]: (state, action) => ({
            ...state,
            [`is${capitalize(lowerCamelCaseType)}Pending`]: false,
            [`${lowerCamelCaseType}Data`]: null,
            [`${lowerCamelCaseType}Error`]: action.error,
        }),
    },
}))

Example of return for 'GET_ALL' type:

{
    GET_ALL: {
        PENDING: (state, action) => {...},
        FULLFILLED: (state, action) => {...},
        REJECTED: (state, action) => {...},
    }
}

overrideGenerateInitialState

Description: Function to change default initial state generator

Params:

Param Type Required
newGenerateInitialState Function True

newGenerateInitialState have these params:

Param Type Description Required Schema
lowerCamelCaseType String Rule in lower camel case (example: 'getAll') True String

newGenerateInitialState must return an object.

Example of code:

overrideGenerateReducer((lowerCamelCaseType) => ({
    [`is${capitalize(lowerCamelCaseType)}Pending`]: false,
    [`${lowerCamelCaseType}Data`]: null,
    [`${lowerCamelCaseType}Error`]: null,
}))

Example of return for 'GET_ALL' type:

{
    isGetAllPending: false,
    getAllData: null,
    getAllError: null,
}

overrideActionTransformer

Description: Function to change default action transformer

Params:

Param Type Required
actionTransformer Function True

actionTransformer have these params:

Param Type Description Required Schema
action Object Action to transformer before entering in reducer True { type: String, ... }

actionTransformer must return another action that will go into reducer.

Example of code to transform payload into a flatten action:

overrideActionTransformer((action) => {
    if (!action.payload) {
        return action;
    }

    const { type, payload: { error, data } } = action;
    return {
        type,
        error,
        data,
    };
})

results matching ""

    No results matching ""