Wystąpił błąd podczas używania redux-persist. Mogłem znaleźć kilka dokumentów na temat redux-persist v5. I po prostu podążam za oficjalnym przykładem użycia. Ale jestem zdezorientowany. Zanim użyję redux-persist, mogę poprawnie pobrać stan ze sklepu. Ale chcę zachować stan logowania w lokalnym. Więc próbuję użyć redux-persist. Potem miałem problemy. Tu jest mój kodu:redux-persist got error: Store nie ma ważnego reduktora
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
})
Kiedy uruchomić ten kod mam ten komunikat o błędzie TypeError: Cannot read property 'isLogin' of undefined
Ten komunikat o błędzie w konsoli Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.
Zgaduję, że coś jest nie tak, gdy łączę reduktory. Ale nie mam pojęcia, gdzie jest źle?
Zrobiłem to, co powiedziałeś. Ale to ten sam błąd. –
Czy możesz zaktualizować pytanie nowym kodem? Czy możesz spróbować mojej zaktualizowanej odpowiedzi – Dane
Przepraszam, mam cię teraz. Zaktualizowałem swój kod, pozwalając, aby reducer.js wyeksportował obiekt. To działa. Dziękuję Ci bardzo. –