https://github.com/kouhin/redyna
Register/unregister dynamic reducers for redux.
https://github.com/kouhin/redyna
dynamically modularization module reducer redux
Last synced: 27 days ago
JSON representation
Register/unregister dynamic reducers for redux.
- Host: GitHub
- URL: https://github.com/kouhin/redyna
- Owner: kouhin
- License: mit
- Created: 2018-07-05T11:03:34.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-11-30T05:18:27.000Z (over 7 years ago)
- Last Synced: 2026-03-25T09:04:43.342Z (3 months ago)
- Topics: dynamically, modularization, module, reducer, redux
- Language: JavaScript
- Homepage:
- Size: 99.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Redyna
Re[dux] Dyna[mic]
Add / remove dynamic reducer for redux.
## Usage
```js
import { createStore } from 'redux';
import { enhanceWithRedyna, addReducer, removeReducer } from 'redyna';
function counter(state = { num: 0 }, action) {
switch (action.type) {
case 'INCREMENT':
return {
num: state.num + 1,
};
case 'DECREMENT':
return {
num: state.num - 1,
};
default:
return state;
}
}
const store = enhanceWithRedyna(createStore)(counter);
store.dispatch({ type: 'INCREMENT' })
// { num: 1 }
store.dispatch({ type: 'APPEND_HELLO' });
// { num: 1 }
function newReducer(state = {}, action) {
if (action.type === 'APPEND_HELLO') {
return {
...state,
word: [state.word || '', 'hello'].filter(x => x).join(' ')
};
}
return state;
}
// Add a newReducer
store.dispatch(addReducer(newReducer));
store.dispatch({ type: 'APPEND_HELLO' });
// { num: 1, word: 'hello' }
store.dispatch({ type: 'APPEND_HELLO' });
// { num: 1, word: 'hello hello' }
// Remove newReducer
store.dispatch(removeReducer(newReducer));
store.dispatch({ type: 'APPEND_HELLO' });
// { num: 1, word: 'hello hello' }
```
## API
### enhanceWithRedyna(createStore) => createStore
Enhance createStore with redyna.
Usage:
``` js
const store = enhanceWithRedyna(createStore)(reducer, initState, enhancer);
```
### addReducer(reducer: Function)
Create a common redux action for registering reducer (Make sure reducer is singleton).
Usage:
``` js
store.dispatch(addReducer(reducer));
```
### removeReducer(reducer: Function)
Create a common redux action for unregistering reducer (Make sure reducer is singleton).
Usage:
``` js
store.dispatch(removeReducer(reducer));
```
## LICENSE
MIT