我正在使用redux-persist 5.5.0调试我的React本机应用程序时,错误提示“ autoRehydrate不是函数”,我的源代码在这里,请给我帮助
"use strict"; import thunk from "redux-thunk"; import analytics from "./analytics"; import array from "./array"; import promise from "./promise"; import reducers from "../reducers"; import { createLogger } from "redux-logger"; import { applyMiddleware, createStore, compose } from "redux"; import { persistStore, autoRehydrate } from "redux-persist"; import { ensureCompatibility } from "./compatibility"; import { AsyncStorage } from "react-native"; const isDebuggingInChrome = false; const logger = createLogger({ predicate: (getState, action) => isDebuggingInChrome, collapsed: true, duration: true }); const middleware = applyMiddleware(thunk, promise, array, analytics, logger); async function configureStore(onComplete: ?() => void) { const didReset = await ensureCompatibility(); const store = createStore(reducers, { /* TODO: Initial state */ }, compose(middleware, autoRehydrate())); persistStore(store, { storage: AsyncStorage }, _ => onComplete(didReset)); if (isDebuggingInChrome) { window.store = store; } return store; }
redux-persist 5.x在API中进行了更改,并且不再使用autoRehydrate。下面是我现在使用redux-persist的方法。
import React, {Component} from 'react'; import {Provider} from 'react-redux'; import {createStore, applyMiddleware, compose} from 'redux'; import {PersistGate} from 'redux-persist/lib/integration/react'; import {persistStore, persistReducer} from 'redux-persist'; import storage from 'redux-persist/lib/storage'; import Thunk from 'redux-thunk'; import Router from './Router'; import reducers from './reducers'; const persistConfig = { key: 'root', storage: storage, }; const persistedReducer = persistReducer(persistConfig, reducers); const store = compose(persistedReducer, {}, composeEnhancers(applyMiddleware(Thunk))); class App extends Component { render() { const persistor = persistStore(store); return ( <Provider store={store}> <PersistGate persistor={persistor}> <Router /> </PersistGate> </Provider> ); } } export default App;