https://github.com/mattphillips/redux-identity
A simple redux reducer that returns the given state
https://github.com/mattphillips/redux-identity
fp identity pure reducer redux state
Last synced: 3 months ago
JSON representation
A simple redux reducer that returns the given state
- Host: GitHub
- URL: https://github.com/mattphillips/redux-identity
- Owner: mattphillips
- License: mit
- Created: 2017-04-20T11:29:23.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-04-20T22:55:45.000Z (about 8 years ago)
- Last Synced: 2025-03-03T17:46:58.410Z (4 months ago)
- Topics: fp, identity, pure, reducer, redux, state
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/redux-identity
- Size: 34.2 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Redux Identity
[](https://badge.fury.io/js/redux-identity)
[](https://travis-ci.org/mattphillips/redux-identity)
[](https://coveralls.io/github/mattphillips/redux-identity?branch=master)
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
```js
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
```js
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