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.
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()]})
By default, immutable Record
s will be persisted and restored as Map
s, 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:
- Add a name attribute to your record (this is the second argument to a
Record
's constructor). - Pass your
Record
constructor to the transformer'swithRecords()
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]})]
}
)