redux-persist-transform-immutable icon indicating copy to clipboard operation
redux-persist-transform-immutable copied to clipboard

How Can I rehydorate model class extended Immustable.Record

Open Yoshihide-Nishimoto opened this issue 5 years ago • 1 comments

How Can I rehydorate model class extended Immustable.Record

This is part of my code.(don't work properly)

my model

export interface IUsers {
  users: List<IUser>;
}
export const UsersRecord = Record<IUsers>(
  {
    users: List(),
  },
  'UsersRecord',
);
export class UsersModel extends UsersRecord{
  addUser() {
      return this.set(
        'users',
        this.users.push(new UserRecord({name: 'test user'})),
    );
  }
}

my store configure

export const createRootReducer = () =>
  combineReducers({
    auth: authReducer,
    users: usersReducer,
  });

const persistConfig = {
  key: 'root',
  storage: AsyncStorage,
  transforms: [
    immutableTransform({
      users: [UsersRecord],
    }),
  ],
};

const persistedReducer = persistReducer(persistConfig, createRootReducer());

handle model instance

  return Object.assign({}, state, {users: state.users.addUser()});

warning

TypeError: state.users.addUser is not a function

It seems redux-persist not restore the users as UsersModel, but

Before implementing redux-persist, state.users.addUser was a function object,and worked fine. Could you help me??

    "react": "16.9.0",
    "react-native": "0.61.5",
    "react-redux": "^7.2.0",
    "redux-persist-transform-immutable": "^5.0.0",
    "redux-persist": "^6.0.0",

Yoshihide-Nishimoto avatar Mar 13 '20 01:03 Yoshihide-Nishimoto

@Yoshihide-Nishimoto Hey did you find any resolution, I am facing the same issue

tusharmutreja200 avatar Sep 17 '21 11:09 tusharmutreja200