New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

switchreducer

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

switchreducer

A small but useful redux switch case helper

latest
Source
npmnpm
Version
1.0.0
Version published
Maintainers
1
Created
Source

switchreducerr

npm npm wercker status David

Description

A simple and small Redux library designed to reduce the verbose boiler plate of the "default" switch statement reducer pattern.

switchreducer

The operation of switchreducer is dead simple. It takes two arguments, the initial state, and a function that's passed a single argument object parameter of the state and the action properties, ie ({state, ...action}). This function expects a return of a lookup table composed of "action" cases which are invoked when a "action" type matches.

switchreducer(<initial-state>, ({<state>, ...<action>}) =>
  <action-lookup-table>
);

Example

import switchreducer from 'switchreducer';

// actions + state
const SET_FILTER = 'SET_FILTER';
const SET_COLOR = 'SET_COLOR';
const initialState = {};

// reducer
const myReducer = switchreducer(initialState, ({state, payload}) => ({
  [SET_FILTER]: () => Object.assign({}, state, {filter: payload}),
  [SET_COLOR]: () => Object.assign({}, state, {color: payload}),
}));

"default" reducer comparison

For comparison here's what the above reducer would look like using the "default" switch statement pattern.

// actions + state
const SET_FILTER = 'SET_FILTER';
const SET_COLOR = 'SET_COLOR';
const initialState = {};

// reducer
const myReducer = (state = initialState, action) => {
  const { type, payload } = action;
  switch (type) {
      case SET_FILTER:
        return Object.assign({}, state, {filter: payload});
      case SET_COLOR:
        return Object.assign({}, state, {color: payload}),
      default:
        return state;
  }
};

switchcase

You may prefer and/or there may be cases that the switchcase lookup table helper is a better fit. The switchcase function is the "real" logic behind switchreducer. It expects a "action" lookup table and two curried arguments the state and the "action" type.

switchcase(<action-lookup-table>)(<state>)(<action-type>);

Example

import { switchcase } from 'switchreducer';

// actions + state
const SET_FILTER = 'SET_FILTER';
const SET_COLOR = 'SET_COLOR';
const initialState = {};

// reducer
const myReducer = (state = initialState, action) => {
  const { type, payload } = action;
  return switchcase(({
    [SET_FILTER]: () => Object.assign({}, state, {filter: payload}),
    [SET_COLOR]: () => Object.assign({}, state, {color: payload}),
  }))(state)(type);
};

Best, te

FAQs

Package last updated on 02 Oct 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts