Redux Persist Transform Immutable
Add immutable sub-reducer support to redux-persist.
NOTE this handles immutable state on a per-reducer basis. If your top level state is an Immutable Map, use redux-persist-immutable
Usage with Redux Persist v5 (latest)
const persistConfig = transforms: key: 'root' storage const reducer = const persistedReducer = const store =
Usage with Redux Persist v4
const reducer = const store = reducer
Config
For config, please refer to redux-persist's docs.
Usage with Records
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:
const reducer = const store = reducer const MyRecord = // <- Be sure to add a name field to your record
Avoiding Unnecessary Serialization
By default, redux-persist-immutable-transform
will serialize and deserialize all passed objects using transit-immutable-js
. If you are concerned about performance, you can either whitelist or blacklist reducer that you know are not immutable.
Example state object:
state = username: 'john' imageUri: 'images/profilePic.png' friends: Immutable
Set up the transformer to ignore the string-based reducer keys:
/* OR */