jangxyz / redux-persist-transform-immutable

immutable support for redux-persist

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Redux Persist Transform Immutable

Add immutable support to redux-persist. NOTE this handles immutable state on a per-reducer basis, but does not provide support for top level immutable state.

Usage

import { compose } from 'redux'
import { persistStore, autoRehydrate } from 'redux-persist'
import immutableTransform from 'redux-persist-transform-immutable'
const reducer = combineReducers(reducers)
const store = compose(autoRehydrate(), createStore)(reducer)

persistStore(store, {transforms: [immutableTransform()]})

Usage with Records

By default, immutable Records will be persisted and restored as Maps, because the library has no way of knowing what your Record constructor looks like. To change this behavior and allow a Record to be persisted and restored as a Record instance, you'll need to do two things:

  1. Add a name attribute to your record (this is the second argument to a Record's constructor).
  2. Pass your Record constructor to the transformer's withRecords() function to generate a transformer capable of serializing and deserializing the record.

Minimal example:

import { compose } from 'redux'
import { persistStore, autoRehydrate } from 'redux-persist'
import immutableTransform from 'redux-persist-transform-immutable'

const reducer = combineReducers(reducers)
const store = compose(autoRehydrate(), createStore)(reducer)

const MyRecord = Record({
  foo: 'null'
}, 'MyRecord') // <- Be sure to add a name field to your record 

persistStore(
  store,
  {
    transforms: [immutableTransform({records: [MyRecord]})]
  }
)

About

immutable support for redux-persist


Languages

Language:JavaScript 100.0%