2017-11-02 29 views
5

Tôi gặp lỗi khi sử dụng tính năng lưu thông đỏ. Tôi có thể tìm thấy vài tài liệu về redux-persist v5. Và tôi chỉ làm theo ví dụ sử dụng chính thức. Nhưng tôi bối rối về điều này. Trước khi tôi sử dụng redux-persist, tôi có thể nhận trạng thái từ cửa hàng một cách chính xác. Nhưng tôi muốn giữ trạng thái đăng nhập ở địa phương. Vì vậy, tôi cố gắng sử dụng redux-persist. Sau đó, tôi có một số vấn đề. Đây là mã của tôi:lỗi redux-persist gặp lỗi: Cửa hàng không có bộ giảm giá hợp lệ

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 
}) 

Khi tôi chạy mã này tôi đã nhận được thông báo lỗi này TypeError: Cannot read property 'isLogin' of undefined Và thông báo lỗi này trong bảng điều khiển Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.

Tôi đoán có điều gì đó không chính xác khi kết hợp bộ giảm tốc. Nhưng tôi không biết đâu là sai?

Trả lời

8

Trong redux-persist tài liệu:

import reducers from './reducers' // where reducers is a object of reducers 

đối số thứ 2 để persistCombineReducers phải là một đối tượng của gia giảm.
Việc xuất khẩu trong reducer.js yout nên là:

export default { 
    reducer: reducer 
}; 

Hãy thay đổi và cho tôi biết nếu nó giải quyết.

+0

Tôi đã làm những gì bạn nói. Nhưng đó là lỗi tương tự. –

+1

bạn có thể cập nhật câu hỏi bằng mã mới không? Bạn có thể vui lòng thử câu trả lời cập nhật của tôi – Dane

+0

Xin lỗi, tôi đã có bạn ngay bây giờ. Tôi cập nhật mã của tôi để cho reducer.js xuất một đối tượng. Nó hoạt động. Cảm ơn nhiều. –

Các vấn đề liên quan