redux-persist got error: Store does not have a valid reducer
redux-persist got error: Store does not have a valid reducer
我在使用 redux-persist 时遇到错误。我几乎找不到关于 redux-persist v5 的文档。我只是按照官方的用法示例。但我对此感到困惑。在我使用 redux-persist 之前,我可以正确地从商店获取状态。但是我想在本地保留登录状态。所以我尝试使用 redux-persist。然后我遇到了一些问题。这是我的代码:
reducer.js
const initialState = {
isLogin: false,
uname: "",
}
const userReducer = (state = initialState, action) => {
switch(action.type) {
case 'DO_LOGIN':
return Object.assign({}, state, {
isLogin: true,
uname: action.payload.username
})
default:
return state
}
}
const reducers = combineReducers({
userInfo: userReducer
})
export default reducers
store.js
import thunk from 'redux-thunk'
import { createLogger } from 'redux-logger'
import { createStore, applyMiddleware, compose } from 'redux'
import { persistStore, persistCombineReducers } from 'redux-persist'
import storage from 'redux-persist/es/storage'
import reducers from '../reducers'
const loggerMiddleware = createLogger()
const middleware = [thunk, loggerMiddleware]
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose
const configureStore = composeEnhancers(
applyMiddleware(...middleware),
)(createStore)
const config = {
key: 'root',
version: 1,
storage,
}
const combinedReducer = persistCombineReducers(config, reducers)
const createAppStore = () => {
let store = configureStore(combinedReducer)
let persistor = persistStore(store)
return { persistor, store }
}
export default createAppStore
App.js
const mapStateToProps = (state) => ({
logged: state.userInfo.isLogin
})
当我 运行 此代码时,我收到此错误消息 TypeError: Cannot read property 'isLogin' of undefined
控制台中出现此错误消息 Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.
我猜合并减速器时有些不正确。但我不知道哪里错了?
在 redux-persist
文档中:
import reducers from './reducers' // where reducers is a object of reducers
persistCombineReducers
的第二个参数必须是 reducers 的对象。
你 reducer.js 中的导出应该是:
export default {
reducer: reducer
};
进行更改,如果问题解决了请告诉我。
我在使用 redux-persist 时遇到错误。我几乎找不到关于 redux-persist v5 的文档。我只是按照官方的用法示例。但我对此感到困惑。在我使用 redux-persist 之前,我可以正确地从商店获取状态。但是我想在本地保留登录状态。所以我尝试使用 redux-persist。然后我遇到了一些问题。这是我的代码:
reducer.js
const initialState = {
isLogin: false,
uname: "",
}
const userReducer = (state = initialState, action) => {
switch(action.type) {
case 'DO_LOGIN':
return Object.assign({}, state, {
isLogin: true,
uname: action.payload.username
})
default:
return state
}
}
const reducers = combineReducers({
userInfo: userReducer
})
export default reducers
store.js
import thunk from 'redux-thunk'
import { createLogger } from 'redux-logger'
import { createStore, applyMiddleware, compose } from 'redux'
import { persistStore, persistCombineReducers } from 'redux-persist'
import storage from 'redux-persist/es/storage'
import reducers from '../reducers'
const loggerMiddleware = createLogger()
const middleware = [thunk, loggerMiddleware]
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose
const configureStore = composeEnhancers(
applyMiddleware(...middleware),
)(createStore)
const config = {
key: 'root',
version: 1,
storage,
}
const combinedReducer = persistCombineReducers(config, reducers)
const createAppStore = () => {
let store = configureStore(combinedReducer)
let persistor = persistStore(store)
return { persistor, store }
}
export default createAppStore
App.js
const mapStateToProps = (state) => ({
logged: state.userInfo.isLogin
})
当我 运行 此代码时,我收到此错误消息 TypeError: Cannot read property 'isLogin' of undefined
控制台中出现此错误消息 Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.
我猜合并减速器时有些不正确。但我不知道哪里错了?
在 redux-persist
文档中:
import reducers from './reducers' // where reducers is a object of reducers
persistCombineReducers
的第二个参数必须是 reducers 的对象。
你 reducer.js 中的导出应该是:
export default {
reducer: reducer
};
进行更改,如果问题解决了请告诉我。