redux-ramda-reducer

1.0.0 • Public • Published

redux-ramda-reducer

npm version npm Build Status dependencies MIT

Simple createReducer in functional style for Ramda library.

Installation

  npm install redux-ramda-reducer

Reducer with redux library

  export default (state = 0, action) => {
    switch (action.type) {
      case 'INCREMENT':
        return state + 1
      case 'DECREMENT':
        return state - 1
      default:
        return state
    }
  }

Reducer with redux-ramda-reducer

Without STATE in handler arguments

import * as R from 'ramda';
import { createReducer } from 'redux-ramda-reducer';
import { COUNTER_ACTIONS } from './constants';
 
const INITIAL_STATE = {
  value: 1,
};
 
const incrementHandler = () => R.evolve({ value: R.inc });
 
const decrementHandler = () => R.evolve({ value: R.dec });
 
const setValueHandler = ({ value }) => R.assoc('value', value);
 
const HANDLERS = {
  [COUNTER_ACTIONS.SET_VALUE]: setValueHandler,
  [COUNTER_ACTIONS.INCREMENT]: incrementHandler,
  [COUNTER_ACTIONS.DECREMENT]: decrementHandler,
}
 
export default createReducer(INITIAL_STATE, HANDLERS);

If you need STATE in handler:

...
 
const setSameValueHandler = () => (state) => R.assoc('value', state.value)(state);
 
const HANDLERS = {
  [COUNTER_ACTIONS.SET_SAME_VALUE]: setSameValueHandler,
}
 
export default createReducer(INITIAL_STATE, HANDLERS);

License

This module is MIT licensed.

Package Sidebar

Install

npm i redux-ramda-reducer

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

4.62 kB

Total Files

4

Last publish

Collaborators

  • maks.kolesnikov