redux-modules

A modular approach to better organize redux stuff (not another library)

MIT License

Stars
21

redux-modules

This is a modular approach to better organize redux stuff. It was inspired by ducks-modular-redux. However, this handles not only actions and reducers, but also selectors, sagas, middlewares etc.

In short, a redux module is:

  • A feature with action creators, reducer, selectors, sagas, middlewares and any other thing from the redux ecosystem (see examples);
  • Complete, which means that one feature will not be separated into multiple modules;
  • Pluggable, which means that you can always add or remove it to have or not that feature without having to change other redux modules.

The problem

Let's say you have an existing project with a bunch of redux entities, such as articles, users and comments, with their own reducers and selectors, as well as action creators or sagas to perform CRUD operations (see examples/resource).

Now you want to add normalizr to it. Then you realize that you'll need to do a lot of refactor to proper normalize and denormalize your entities.

The problem gets even worse if after some time your team decides to remove normalizr. You'll need to refactor everything again.

The solution

A redux module would take care of and encapsulate the normalization feature (see examples/entities).

You'll just need to change your containers to use selectors from the entities module instead of the articles, users and comments ones.

License

MIT © Diego Haz

Badges
Extracted from project README
Build Status Coverage Status
Related Projects