2017-11-02 15 views
5

redux-persistを使用しているときにエラーが発生しました。私はredux-persist v5に関するいくつかの文書を見つけることができた。私は公式の使用例に従っています。しかし、私はこれについて混乱しています。 redux-persistを使用する前に、私はストアから状態を正しく取得できます。しかし、私はローカルのログイン状態を維持したい。ですから、私はredux-persistを使用しようとします。それから、いくつかの問題があります。ここに私のコードです:redux-persist gotエラー:Storeに有効なレデューサーがありません

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.

還元剤を組み合わせると何かが間違っているようです。しかし、どこが間違っているのか分かりません。

答えて

8

redux-persistドキュメントでは:

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

persistCombineReducersへの第2引数は、減速のオブジェクトでなければなりません。
はyoutはreducer.jsの輸出は次のようになります。

export default { 
    reducer: reducer 
}; 

は、変更を行い、それが解決した場合、私に知らせてください。

+0

私はあなたの言ったことをしました。しかし、それは同じエラーです。 –

+1

新しいコードで質問を更新できますか?あなたは私の更新された答えを試してみてください – Dane

+0

申し訳ありません、私はあなたを今得ました。私は自分のコードを更新して、reducer.jsがオブジェクトをエクスポートできるようにしました。できます。どうもありがとうございました。 –

関連する問題