rt2zz / redux-persist

persist and rehydrate a redux store
MIT License
12.94k stars 866 forks source link

Incorrect work with immer immutable state first level. #1298

Open sergeushenecz opened 3 years ago

sergeushenecz commented 3 years ago

Hello everyone. Big thanks for the library. I found strange behaviour when we use with immer.

  1. In this line baseReducer return immutable state it is correct https://github.com/rt2zz/redux-persist/blob/master/src/persistReducer.js#L176
  2. In this line https://github.com/rt2zz/redux-persist/blob/master/src/persistReducer.js#L176 we return new object newState. But newState is is not immutable object already.

It turns out persistReducer returns mutable object first level.

Example:

If we have reducer which return immutable object for example globalReducers: { test: { test2 } } then your persistReducer return mutable object first level and i can change "test" property but test 2 property i can't change.

I think it is incorrect behaviour work with immer.

Maybe i wrong understand but with immer persistReducer return mutable object first level. If you have same issue maybe have workaround.