【发布时间】:2018-01-31 11:04:03
【问题描述】:
我目前收到错误 TypeError: getState is not a function 我正在尝试类似于http://redux.js.org/docs/advanced/AsyncActions.html
的示例action.js - 此处发生错误
export const fetchCategoriesIfNeeded = (dispatch, getState) => {
if(shouldFetchCategories(getState())){
return dispatch(fetchCategories())
}
}
App.js
componentDidMount(){
this.props.dispatch(fetchCategoriesIfNeeded())
}
...
const mapStateToProps = (state, props) => {
return {
isFetching: state.isFetching,
categories: state.categories
}
}
reducer.js
function data (state = initialState, action){
switch(action.type){
case RECEIVE_CATEGORIES:
return {
...state,
isFetching: false,
categories: action.categories
}
case REQUEST_CATEGORIES:
return {
...state,
isFetching: true
}
default:
return state
}
return state
}
为了可读性省略了一些代码。
我也试过这个并收到 TypeError: dispatch is not a function
export function fetchCategoriesIfNeeded(){
return(dispatch, getState) =>{
var state = getState()
if(shouldFetchCategories(state)){
dispatch(fetchCategories())
}
}
}
【问题讨论】:
-
好吧,当你调用它时,你没有向 fetchCategoriesIfNeeded 传递任何东西,所以当它试图调用 getState 时它会连枷。
-
我猜(我们看不到
this.props.dispatch,但这个名字让我相信)你的意思是this.props.dispatch(fetchCategoriesIfNeeded) -
我正在使用 thunk 中间件。我稍微更改了我的代码,但现在它说调度不是一个函数。
标签: javascript asynchronous react-redux getstate