New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

repatch

Package Overview
Dependencies
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

repatch

Dispatch reducers

  • 0.0.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
208
decreased by-36.97%
Maintainers
1
Weekly downloads
 
Created
Source

Repatch

Dispatch reducers

The most of redux projects do not need sctrict action administration. Action types, action creators and reducers' action handlers are mutually assigned to each other.

The simplest way to keep immutable action controlled dataflow is dispatching pure functions (as reducers) to the store.

So we have only actions which return reducers.

const resolveFetchingUsers = users => state => ({
  ...state,
  users,
  isFetching: false
});

Installation

npm install repatch

How to use

import Store from 'repatch';

const store = new Store(initialState);

Repatch's interface is the same as Redux, therefore you can use with react-redux.

store.subscribe(() => console.log(store.getState()));

store.dispatch(resolveFetchingUsers(users));

Async actions

In async actions reducer returns a function (delegate).

const updateUser = delta => state => async (dispatch, getState) => {
  const editedUserId = getState().editedUser;
  dispatch(toggleSpinner(true));
  await api.updateUser(editedUserId, delta);
  await dispatch(fetchUsers());
  dispatch(toggleSpinner(false));
};

Subreducers

We do not need to reduce always the whole state of the store. A good practice to avoid this effort is using subreducers.

Let's suppose we have the following state:

const store = new Store({
  userManagement: {
    users: [...],
    isFetching: false,
    error: null 
  }
});

Then we can make a subredcer for the userManagement section:

const reduceUserManagement = reducer => state => ({
  ...state,
  userManagement: reducer(state.userManagement)
});

After that reducing only the userManagement state it's easy:

const rejectFetchingUsers = error =>
  reduceUserManagement(state => ({ ...state, error, isFetching: false }));

FAQs

Package last updated on 26 Jun 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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc