redux-identity
v0.0.1
Published
A simple redux reducer that returns the given state
Downloads
2
Maintainers
Readme
Redux Identity
Super tiny redux identity reducer for persisting a slice of state after updates.
Installation
npm install --save redux-identity
yarn add redux-identity
API
IdentityReducer(initialState)
IdentityReducer :: a -> a -> a
- parameter: initial state of reducer
- return: a reducer which when invoked by redux will return the given slice of state or the initial reducer state if no slice exists
Usage
Reducer only initial state
No initial state is supplied to the createStore
function
import IdentityReducer from 'redux-identity';
import { combineReducers, createStore } from 'redux';
import apiReducer from '../some/local/path';
import counterReducer from '../some/other/local/path';
const reducers = combineReducers({
CLIENT_ID: IdentityReducer('SOME UNIQUE ID'),
api: apiReducer,
counter: counterReducer
});
let store = createStore(reducers);
store.subscribe(() => console.log(store.getState());
// Dispatching any action will not update the value of state at the identity reducer slice
store.dispatch({ type: 'FETCH' });
// { CLIENT_ID: 'SOME UNIQUE ID', api: {...}, counter: 0 }
store.dispatch({ type: 'INCREMENT' });
// { CLIENT_ID: 'SOME UNIQUE ID', api: {...}, counter: 1 }
store.dispatch({ type: 'DECREMENT' });
// { CLIENT_ID: 'SOME UNIQUE ID', api: {...}, counter: 0 }
Redux Store Initial State
Initial state of the identity reducer is overridden and then persisted by the corresponding slice of the state object provided to the createStore
function
import IdentityReducer from 'redux-identity';
import { combineReducers, createStore } from 'redux';
import apiReducer from '../some/local/path';
import counterReducer from '../some/other/local/path';
const reducers = combineReducers({
CLIENT_ID: IdentityReducer('SOME UNIQUE ID'),
api: apiReducer,
counter: counterReducer
});
let store = createStore(reducers, { CLIENT_ID: '123456789' });
store.subscribe(() => console.log(store.getState());
// Dispatching any action will not update the value of state at the identity reducer slice
store.dispatch({ type: 'FETCH' });
// { CLIENT_ID: '123456789', api: {...}, counter: 0 }
store.dispatch({ type: 'INCREMENT' });
// { CLIENT_ID: '123456789', api: {...}, counter: 1 }
store.dispatch({ type: 'DECREMENT' });
// { CLIENT_ID: '123456789', api: {...}, counter: 0 }
License
MIT