Я хотел реализовать метод подписки Redux для автоматического сохранения определенных изменений состояния в localstorage, как объясняет Дэн Абрамов в этом видео: Сохранение состояния в локальном хранилище
Я сделал то же самое, что и на видео, но получаю сообщение об ошибке:
TypeError: __webpack_require__.i(...) is not a function
И проект не загружается. Ошибка указывает на функцию store.subscribe, которая есть у меня в файле store.js. Вы видите здесь что-то не так? Что-то в неправильном порядке или что-то в этом роде?
Вот файл store.js (кроме других импортов):
import {throttle} from 'lodash/throttle';
const sagaMiddleware = createSagaMiddleware();
const logger = createLogger({
collapsed: true,
});
const middlewares = [
sagaMiddleware,
routerMiddleware(history),
];
const enhancers = [
applyMiddleware(...middlewares)
];
const composeEnhancers =
process.env.NODE_ENV !== 'production' &&
typeof window === 'object' &&
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : compose;
const persistedState = loadState();
const store = createStore(
reducers,
persistedState,
composeEnhancers(...enhancers)
);
store.subscribe(throttle(() => {
saveState({
cart: store.getState().cart
});
}), 1000);
sagaMiddleware.run(rootSaga);
export default store;
Если закомментировать блок store.subscribe, ошибка исчезнет
// store.subscribe(throttle(() => {
// saveState({
// cart: store.getState().cart
// });
// }), 1000);
Store.js импортируется в "index.js" и помещается в Provider:
<Provider store = {store}>
«reducers» (в методе createStore) - это файл, в котором объединены все редукторы (с combReducers).
Файл "localStorageHanding" я назвал иначе, чем в примере Абрамова, был некоторый конфликт с файлами, которые импортируют "localStorage", я не думаю, что localStorage нужно импортировать, но это не проблема ...).
Функции saveState и loadState localStorageHandling точно такие же, как в видео:
export const loadState = () => {
try{
const serializedState = localStorage.getItem('state');
if (serializedState === null){
return undefined;
}
return JSON.parse(serializedState);
}catch(err){
return undefined;
}
}
export const saveState = (state) => {
try{
const serializedState = JSON.stringify(state);
localStorage.setItem('state', serializedState);
}catch(err){
}
}
у меня есть
"react-redux": "^5.0.3",
"react": "^15.5.0",





Следует либо импортировать throttle из основной точки входа как именованный импорт, либо как импорт по умолчанию из lodash/throttle.
import { throttle } from 'lodash';
// or
import throttle from 'lodash/throttle';