我正在使用redux-persist 5.5.0 当我调试我的本机应用程序时, 错误说“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;
}
答案 0 :(得分:11)
redux-persist 5.x已更改API并且不再使用autoRehydrate。以下是我现在使用redux-persist的方式。
function initMap() {
var directionsService = new google.maps.DirectionsService;
var directionsDisplay = new google.maps.DirectionsRenderer;
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 15,
center: {lat: 44.291971, lng: 19.9722431}
});
directionsDisplay.setMap(map);
var onChangeHandler = function() {
document.getElementById("setPanel").innerHTML = ""; // THIS ONE!
calculateAndDisplayRoute(directionsService, directionsDisplay);
};
document.getElementById('start').addEventListener('change', onChangeHandler);
document.getElementById('end').addEventListener('change', onChangeHandler);
}
function calculateAndDisplayRoute(directionsService, directionsDisplay) {
directionsService.route({
origin: document.getElementById('start').value,
destination: document.getElementById('end').value,
provideRouteAlternatives: true,
travelMode: 'DRIVING'
}, function(response, status) {
if (status === 'OK') {
// set loop to iterate through from the response.routes array
console.log(response.routes.length);
console.log(response.routes);
for (var j = 0; j < response.routes.length; j++){
var dirDisplay = new google.maps.DirectionsRenderer();
dirDisplay.setMap(map);
dirDisplay.setDirections(response);
dirDisplay.setPanel(document.getElementById("setPanel"));
dirDisplay.setRouteIndex(j);
directionsDisplay.setDirections(response);
dirDisplay.setOptions({
draggable: true,
hideRouteIndex: true,
polylineOptions : {
strokeColor: colours[j],
strokeOpacity: 1.0,
strokeWeight: 5
}
});
}
} else {
window.alert('Directions request failed due to ' + status);
}
});
}
答案 1 :(得分:0)
如果使用上述方法,则错误:Object(...)不是函数,然后尝试使用: const store = createStore( 持久化减速器, applyMiddleware(thunk,logger) );