Skip to content

maksim-chekrishov/redux-localstorage-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

redux-localstorage-adapter

Localstorage adapter for redux

npm version

##Main points

  • Keep your components pure.
  • Sync localstorage and store and use actions to change it.

##Setup

###your/known-localstorage-api.js

import LocalStorageApi from 'redux-localstorage-adapter';

const knownLocalStorageKeys = [
  'NEWS_SIMILAR_ENTRIES_TEMPLATE',
  'FIRE_THEME_ENABLED'
];

const knownApi = {};

knownLocalStorageKeys.forEach(key=> {
  knownApi[key] = new LocalStorageApi(key);
});

export default knownApi;

###your/localstorage-reducer.js

import knownLocalStorageApi from 'your/known-localstorage-api';
import {combineReducers} from 'redux';

export default combineReducers(_.mapValues(knownLocalStorageApi, api => api.reducer));

###your/index-reducer.js

import localStorage from 'your/localstorage-reducer';
import {combineReducers} from 'redux';

export default combineReducers({
  localStorage
  //..
});

###your/localstorage-actions.js

import knownLocalStorageApi from 'your/known-localstorage-api';

export default _.mapValues(knownLocalStorageApi, api => api.actions);

##Usage

###your/some-redux-container.js

import localStorageActions from 'your/localstorage-actions';

class SomeComponent extends BaseComponent {
/...
 onCarIconClick = ()=> {
    this.props.setFire(!this.props.fireEnabled);
  }
/...
}

const mapStateToProps = (state) => ({
  fireEnabled: state.localStorage.FIRE_THEME_ENABLED
});

const mapDispatchToProps = {
  setFire: localStorageActions.FIRE_THEME_ENABLED.setItem
}

export default connect(mapStateToProps, mapDispatchToProps)(SomeComponent);

##Enjoy the redux flow

Image devTools

Releases

No releases published

Packages

No packages published