ruve-ngrx-store-localstorage v5.0.1
ngrx-store-localstorage
Simple syncing between ngrx store and local storage.
Dependencies
ngrx-store-localstorage depends on @ngrx/store and Angular 2+.
Usage
npm install ngrx-store-localstorage --saveUPDATE FOR NGRX 4
- Wrap localStorageSync in an exported function.
- Include in your meta-reducers array in
StoreModule.forRoot.
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { StoreModule, ActionReducerMap, ActionReducer, MetaReducer } from '@ngrx/store';
import { localStorageSync } from 'ngrx-store-localstorage';
import { reducers } from './reducers';
const reducers: ActionReducerMap<IState> = {todos, visibilityFilter};
export function localStorageSyncReducer(reducer: ActionReducer<any>): ActionReducer<any> {
return localStorageSync({keys: ['todos']})(reducer);
}
const metaReducers: Array<MetaReducer<any, any>> = [localStorageSyncReducer];
@NgModule({
imports: [
BrowserModule,
StoreModule.forRoot(
reducers,
{metaReducers}
)
]
})
export class MyAppModule {}API
localStorageSync(config: LocalStorageConfig): Reducer
Provide state (reducer) keys to sync with local storage. Returns a meta-reducer.
Arguments
configAn object that matches with theLocalStorageConfiginterface,keysis the only required property.
LocalStorageConfig
An interface defining the configuration attributes to bootstrap localStorageSync. The following are properties which compose LocalStorageConfig:
keys(required) State keys to sync with local storage. The keys can be defined in two different formats:string[]: Array of strings representing the state (reducer) keys. Full state will be synced (e.g.localStorageSync({keys: ['todos']})).object[]: Array of objects where for each object the key represents the state key and the value represents custom serialize/deserialize options. This can be one of the following:An array of properties which should be synced. This allows for the partial state sync (e.g.
localStorageSync({keys: [{todos: ['name', 'status'] }, ... ]})).A reviver function as specified in the JSON.parse documentation.
An object with properties that specify one or more of the following:
serialize: A function that takes a state object and returns a plain json object to pass to json.stringify.
deserialize: A function that takes that takes the raw JSON from JSON.parse and builds a state object.
replacer: A replacer function as specified in the JSON.stringify documentation.
space: The space value to pass JSON.stringify.
reviver: A reviver function as specified in the JSON.parse documentation.
filter: An array of properties which should be synced (same format as the stand-alone array specified above).
rehydrate(optional)boolean: Pull initial state from local storage on startup, this will default tofalse.storage(optional)Storage: Specify an object that conforms to the Storage interface to use, this will default tolocalStorage.removeOnUndefined(optional)boolean: Specify if the state is removed from the storage when the new value is undefined, this will default tofalse.storageKeySerializer(optional)(key: string) => string: Сustom serialize function for storage keys, used to avoid Storage conflicts.restoreDates(boolean? = true): Restore serialized date objects. If you work directly with ISO date strings, set this option tofalse. Usage:localStorageSync({keys: ['todos', 'visibilityFilter'], storageKeySerializer: (key) => 'cool_' + key, ... }). In this exampleStoragewill use keyscool_todosandcool_visibilityFilterkeys to storetodosandvisibilityFilterslices of state). The key itself is used by default -(key) => key.
localStorageSyncAndClean(keys: any[], rehydrate: boolean = false, removeOnUndefined: boolean = false): Reducer
localStorageSyncAndClean(keys: any[], rehydrate: boolean = false, removeOnUndefined: boolean = false): ReducerThis function is deprecated and soon will be removed, please use localStorageSync(LocalStorageConfig).
A shorthand that wraps the functionalities of localStorageSync and asumes localStorage as the storage.
Arguments
keysState keys to sync with local storage. The keys can be defined in two different formats:(string[]): Array of strings representing the state (reducer) keys. Full state will be synced (e.g.
localStorageSync(['todos'])).(object[]): Array of objects where for each object the key represents the state key and the value represents custom serialize/deserialize options. This can be one of the following:
An array of properties which should be synced. This allows for the partial state sync (e.g.
localStorageSync([{todos: ['name', 'status'] }, ... ])).A reviver function as specified in the JSON.parse documentation.
An object with properties that specify one or more of the following:
serialize: A function that takes a state object and returns a plain json object to pass to json.stringify.
deserialize: A function that takes that takes the raw JSON from JSON.parse and builds a state object.
replacer: A replacer function as specified in the JSON.stringify documentation.
space: The space value to pass JSON.stringify.
reviver: A reviver function as specified in the JSON.parse documentation.
filter: An array of properties which should be synced (same format as the stand-along array specified above).
rehydrateState(boolean? = false): Pull initial state from local storage on startup.removeOnUndefined(boolean? = false): Specify if the state is removed from the storage when the new value is undefined.
8 years ago