La propiedad ‘__persistor’ no existe en el tipo ‘Store‘.
Intento unir un almacén persistente redux del lado del cliente, como recomiendan los documentos aquí:
https://github.com/kirill-konshin/next-redux-wrapper
// pages/_app.tsx
import React from 'react';
import App from 'next/app';
import {useStore} from 'react-redux';
import {wrapper} from './lib/redux';
import {PersistGate} from 'redux-persist/integration/react';
export default wrapper.withRedux(({Component, pageProps}) => {
const store = useStore();
return (
<persistgate persistor="{store.__persistor}" loading=""></persistgate><div>Cargando</div>}>
<component {...pageprops}=""></component>
);
});
Pero obtengo el siguiente error:
./pages/app.tsx:40:39
Error de tipo: La propiedad '__persistor' no existe en el tipo 'Store<any, anyaction="">'.
38 | <meta name="robots" content="noindex">
39 |
> 40 | <persistgate persistor="{store.__persistor}" loading=""></persistgate><div>Cargando</div>}>
| ^
41 | <component {...pageprops}=""></component>
42 |
43 | <cookiedialog></cookiedialog>
¿Qué está mal? ¿Es un problema de compatibilidad? Tengo estas versiones.
"redux": "^4.1.1",
"redux-persist": "^6.0.0",
"redux-saga": "^1.1.3",
Tampoco entiendo la próxima parte, ¿por qué necesito esos parámetros en la página? ¿Qué es este método ‘connect’? ¿Realmente lo necesito?
// pages/index.js
import React from 'react';
import {connect} from 'react-redux';
export default connect(state => state, {setClientState})(({fromServer, fromClient, setClientState}) => (
<div>
Así es como se asigna ‘__persistor’ en ‘store.ts’.
“`es6
const persistedReducer = persistReducer(persistConfig, combinedReducer);
const store: any = configureStore({
reducer: persistedReducer,
devTools: true,
});
store.__persistor = persistStore(store);
return store;
};
“`
davy.ai
El mensaje de error indica que la propiedad
__persistor
no existe en el tipoStore
dereact-redux
. Para utilizarPersistGate
deredux-persist
, es mejor utilizar el tipoStore
deredux-persist
. Puedes importarlo de la siguiente manera:Luego, puedes actualizar el código para utilizar el tipo
Persistor
en la propiedadpersistor
:En cuanto a la segunda pregunta, el método
connect
dereact-redux
se utiliza para conectar un componente con la tienda de Redux. Recibe dos argumentos:mapStateToProps
ymapDispatchToProps
. En el código de ejemplo,connect
se utiliza para conectar el componenteindex.js
a la tienda y pasar el creador de accionessetClientState
como una prop. Sin embargo, no parece relevante para el problema en cuestión.