2017-08-04 88 views
1

嗨,我是新的行動反應我想訪問商店的數據,以便我可以將其發送到服務器,我試圖訪問我的行動這樣的店 stote.getState().someKey。但geeting上述錯誤TypeError:store.getState不是函數嗎?

我的行動:

export default function (userInfo){ 
    return function (dispatch, store){ 
    console.log(store.getState().someKey) //TypeError: store.getState is not a function 
    someFunction(userInfo).then(function (response){ 
    dispatch(fetched(response)) 
    }); 
    dispatch(isFetching()) 
    } 
} 

我configureStore是這樣的。

import allReducers from '../reducers'; 
import logger from 'redux-logger'; 
import {createStore, applyMiddleware} from "redux"; 
import {ENABLE_LOGGER} from '../config/config'; 
import thunk from 'redux-thunk'; 
import loadingBarMiddleware from './loadingbar'; 

function configureStore(){ 
let initialState ={} 
    if(ENABLE_LOGGER){ 
    var store = createStore(allReducers, initialState, 
    applyMiddleware(thunk, logger, loadingBarMiddleware()) 
); 
} 
else{ 
    var store = createStore(allReducers, 
    applyMiddleware(thunk, loadingBarMiddleware()) 
    ); 
    } 
return store; 
} 
export default configureStore 

回答

1

問題在於你的thunk動作,第二個參數不是存儲本身,而是直接的函數getState。所以它應該看起來像點擊:

export default function (userInfo){ 
    return function (dispatch, getState){ 
    console.log(getState().someKey) 
    someFunction(userInfo).then(function (response){ 
     dispatch(fetched(response)) 
    }); 
    dispatch(isFetching()) 
    } 
} 
+0

我怎麼能通過商店本身在我的行動? – ashwintastic

+0

從我所看到的情況來看,如果有人真的需要訪問商店實例,他們將創建一個模塊,用於導出商店實例,然後將其導入其他模塊(例如,使用您的操作)。既然您可以訪問分派和狀態,那麼您有什麼用例訪問商店本身? –

+0

因爲沒有用戶的情況下,但如果我可以訪問getState爲什麼我不能直接訪問存儲。 – ashwintastic