c388048f3e
Wrong variable was being checked for the hydrate action on redux. This was causing the count to be reset to 0 instead of being 1 when initially loading index.js page. Fixes #17299
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
import { createStore, applyMiddleware, combineReducers } from 'redux'
|
|
import { HYDRATE, createWrapper } from 'next-redux-wrapper'
|
|
import thunkMiddleware from 'redux-thunk'
|
|
import count from './count/reducer'
|
|
import tick from './tick/reducer'
|
|
|
|
const bindMiddleware = (middleware) => {
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
const { composeWithDevTools } = require('redux-devtools-extension')
|
|
return composeWithDevTools(applyMiddleware(...middleware))
|
|
}
|
|
return applyMiddleware(...middleware)
|
|
}
|
|
|
|
const combinedReducer = combineReducers({
|
|
count,
|
|
tick,
|
|
})
|
|
|
|
const reducer = (state, action) => {
|
|
if (action.type === HYDRATE) {
|
|
const nextState = {
|
|
...state, // use previous state
|
|
...action.payload, // apply delta from hydration
|
|
}
|
|
if (state.count.count) nextState.count.count = state.count.count // preserve count value on client side navigation
|
|
return nextState
|
|
} else {
|
|
return combinedReducer(state, action)
|
|
}
|
|
}
|
|
|
|
const initStore = () => {
|
|
return createStore(reducer, bindMiddleware([thunkMiddleware]))
|
|
}
|
|
|
|
export const wrapper = createWrapper(initStore)
|