Strongly-typed collection of useful tools to make your Redux workflow more dynamic.
- No huge
switchstatements! stateis always immutableactionis always immutablecontextshared between all subscriptions- Declarative reducer subscriptions to the actions
- Encouraging pure resolver functions
- Support of
RegExpas the expected action type
npm install redux-dynamics --saveyarn add redux-dynamics// ./store/comments/index.js import { Reducer } from 'redux-dynamics'; /* Create a new reducer with initial state */ const reducer = new Reducer({ likes: 0 }); /* Subscribe to different actions */ reducer.subscribe('ADD_LIKE', (state, action, context) => { /* Note how both "state" and "action" are immutable */ const nextLikes = state.get('likes') + action.get('amount'); /* Resolve the next state */ return state.set('likes', nextLikes); }); reducer.subscribe('ACTION_TYPE', (state, action, context) => state); export default reducer;// ./store/reducer.js import { createReducer } from 'redux'; import commentsReducer from './comments'; export default createReducer({ /* Convert "Reducer" class into pure reducer function */ comments: commentsReducer.toFunction() });For more details on methods, usage examples and troubleshooting see the Documentation.
Feel free to submit your ideas on enhanced Redux workflow by issuing a Pull request.
In case you have discovered a bug, outdated documentation or any other mismatch, please create a new Issue.
This library is licensed under MIT license.