react-native redux-persist

react native - Cómo resolverlo: console.error: “redux-persist no pudo crear el almacenamiento sincronizado. volviendo al almacenamiento "noop"



react-native (3)

Estoy tratando de configurar redux-persist en una aplicación nativa de reacción.

Sin embargo, estoy golpeando este error:

console.error: "redux-persist no pudo crear el almacenamiento sincronizado. volviendo al almacenamiento" noop "

Traté de cambiar el almacenamiento de almacenamiento a AsyncStorage en "src / redux / index.js", pero todavía está recibiendo el mismo error:

import AsyncStorage from ''@react-native-community/async-storage''; const config = { key: "root", storage: AsyncStorage // Attempted to fix it (but failed) // storage // old code };

Aquí están los otros códigos:

En App.js:

import React, { Component } from "react"; import { Provider } from "react-redux"; import { persistStore } from "redux-persist"; import { PersistGate } from "redux-persist/es/integration/react"; import store from "@store/configureStore"; import Router from "./src/Router"; export default class ReduxWrapper extends Component { render() { const persistor = persistStore(store); return ( <Provider store={store}> <PersistGate persistor={persistor}> <Router /> </PersistGate> </Provider> ); } }

En configureStore.js:

import { applyMiddleware, compose, createStore } from "redux"; import thunk from "redux-thunk"; import reducers from "@redux"; const middleware = [ thunk, // more middleware ]; const configureStore = () => { let store = null; store = compose(applyMiddleware(...middleware))(createStore)(reducers); return store; }; export default configureStore();

En /src/redux/index.js

import { persistCombineReducers } from "redux-persist"; import storage from "redux-persist/es/storage"; import { reducer as NetInfoReducer } from "./NetInfoRedux"; import { reducer as UserRedux } from "./UserRedux"; const config = { key: "root", storage, }; export default persistCombineReducers(config, { netInfo: NetInfoReducer, user: UserRedux, }

En Router.js

import React from "react"; import NetInfo from "@react-native-community/netinfo/lib/commonjs"; import { Config, AppConfig, Device, Styles, Theme, withTheme } from "@common"; import { AppIntro } from "@components"; import { connect } from "react-redux"; class Router extends React.PureComponent { constructor(props){ super(props) this.state = { loading: true, }; } componentWillMount() { NetInfo.getConnectionInfo().then((connectionInfo) => { this.props.updateConnectionStatus(connectionInfo.type != "none"); this.setState({ loading: false }); }); } render() { return <AppIntro />; } } export default withTheme( connect( // mapStateToProps, // mapDispatchToProps )(Router) );

Actualizar:

Gestionado para resolver la base de error en la sugerencia mychar: github.com/rt2zz/redux-persist/issues/1080:

1) instalación npm --save @ react-native-community / async-storage

2) en iOS, recuerde realizar la "instalación de pod" en la carpeta iOS

3) Cambiar el almacenamiento a AsyncStorage

old code => import storage from ''redux-persist/lib/storage''; new code => import AsyncStorage from ''@react-native-community/async-storage''; old code => const persistConfig = { //... storage, } new code => const persistConfig = { //... storage: AsyncStorage, }

Sin embargo, sigo recibiendo esta advertencia:


Antes de redux-persist persist v6.0.0 estabas usando almacenamiento como este:

import storage from ''redux-persist/lib/storage'';

Lo que esto usa en segundo plano es AsyncStorage que estaba en el núcleo react-native .

Dado que react-native ha desaprobado AsyncStorage y lo eliminará del núcleo react-native , la nueva versión de redux-persist ha dejado de usarlo y parece una buena decisión.

Puede hacer lo mismo ahora, pero en lugar de importar AsyncStorage desde la versión de la comunidad .

import AsyncStorage from ''@react-native-community/async-storage'';

Y luego úsalo en tu configuración:

const persistConfig = { storage: AsyncStorage, //other configurations };

La degradación a redux-persist v5 no es una solución estable ya que utiliza AsyncStorage de core react-native y react-native lo eliminará por completo en las próximas versiones.

También leí en los comentarios que no le gusta AsyncStorage , así como le expliqué que redux-persist ha estado utilizando como almacenamiento, por lo que la única diferencia ahora es que debe obtenerlo de la versión de la comunidad y no del núcleo react-native


En redux-persist v6, intenta cambiar de la siguiente manera:

Configuración anterior V5 =>

import storage from ''redux-persist/lib/storage''; const persistConfig = { //... storage, }

Nueva configuración v6 =>

Primero agregue: yarn add @react-native-community/async-storage

import AsyncStorage from ''@react-native-community/async-storage''; const persistConfig = { //... storage: AsyncStorage, }


Mi error se resolvió rebajando la versión redux-persis a "5.10.0".