import { createStore, applyMiddleware } from "redux"; import { HYDRATE, createWrapper } from "next-redux-wrapper"; import thunkMiddleware from "redux-thunk"; // import { ThunkMiddleware } from 'redux-thunk'; import reducers from "./reducers/reducers"; const bindMiddleware = middleware => { if (process.env.NODE_ENV !== "production") { const { composerWithDevTools, composeWithDevTools } = require("redux-devtools-extension"); return composeWithDevTools(applyMiddleware(...middleware)); } return applyMiddleware(...middleware); }; const reducer = (state, action) => { if (action.type === HYDRATE) { const nextState = { ...state, ...action.payload }; return nextState; } else { return reducers(state, action); } }; const initStore = () => { return createStore(reducer, bindMiddleware([thunkMiddleware])); }; export const wrapper = createWrapper(initStore);