rt2zz / redux-persist

persist and rehydrate a redux store
MIT License
12.95k stars 865 forks source link

PersistGate Type error #731

Open diegolaciar opened 6 years ago

diegolaciar commented 6 years ago

Hi,

I'm using redux with immutable and redux-persist.

Works good and auto hydrate from the storage to redux store is working. But, when I try to include PersistGate I get this error.

      <Provider store={store}>
        <PersistGate loading={() => <div>LOADING...</div>} persistor={persistor}>
          <RootComponent>
        </PersistGate>
      </Provider>

This is the persistor I set : {rehydrate: ƒ, pause: ƒ, resume: ƒ, purge: ƒ} Looks the interface is the same as in the documentation.

The error:

Uncaught TypeError: this.props.persistor.subscribe is not a function
    at PersistGate.componentDidMount (react.js?e23e:53)
    at commitLifeCycles (react-dom.development.js:8770)
    at commitAllLifeCycles (react-dom.development.js:9946)
    at HTMLUnknownElement.callCallback (react-dom.development.js:542)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:581)
    at invokeGuardedCallback (react-dom.development.js:438)
    at commitRoot (react-dom.development.js:10050)
    at performWorkOnRoot (react-dom.development.js:11017)
    at performWork (react-dom.development.js:10967)
    at requestWork (react-dom.development.js:10878)

I tried to use PersistGate to solve this issue https://github.com/rt2zz/redux-persist/issues/732 and i got this error

Thanks,

thenewt15 commented 6 years ago

The loading prop takes either null or a component.

diegolaciar commented 6 years ago

Thanks @thenewt15, but already changed that, the error persist. Write a component or null don' t fix this issue.

diegolaciar commented 6 years ago

Also note that the Uncaught TypeError expect a subscribe function, as the ".subscribe(listener)" that redux Store have. https://redux.js.org/api-reference/store Persistor do not have that function.

rt2zz commented 6 years ago

@diegolaciar it looks like you are using redux-persist v4, but somehow also getting PersistGate which is only available in (and compatible with) v5.

You can read about the upgrade here: https://github.com/rt2zz/redux-persist/blob/master/docs/MigrationGuide-v5.md

However please note there is no top level immutable support in v5. If you need top level immutable you will need to stick to v4 and not use PersistGate

fntneves commented 6 years ago

I am experiencing the same issue as @diegolaciar.

Kannnnng commented 6 years ago

Do you have a plan to support immutable in V5? Thanks to your awesome work : ) @rt2zz

alburdette619 commented 6 years ago

I'm also experiencing this issue and am using redux-persist v5.0.7

SrujithPoondla commented 6 years ago

I am also experiencing the same issue with redux-persist@5.10.0

dgaitsgo commented 6 years ago

idem redux-persist@5.10.0

TySol commented 6 years ago

same - redux-persist@5.10.0

heresmyinfo commented 6 years ago

+1 redux-persist@5.10.0

whydna commented 6 years ago

same issue 5.10

sebasegura97 commented 6 years ago

same issue redux-persist@5.10.0

bamdadghoori commented 2 years ago

I solved the same problem this way: in store.js instead of

export default () => {
  let store = createStore(persistedReducer)
  let persistor = persistStore(store)
  return { store, persistor }
}

use :

export let store = createStore(persistedReducer)
export let persistor= persistStore(store)