我目前收到错误TypeError:getState不是函数 我正尝试类似于{{3}}
的示例action.js - 此处发生错误
webbrowser.open(filename)
App.js
export const fetchCategoriesIfNeeded = (dispatch, getState) => {
if(shouldFetchCategories(getState())){
return dispatch(fetchCategories())
}
}
...
componentDidMount(){
this.props.dispatch(fetchCategoriesIfNeeded())
}
reducer.js
const mapStateToProps = (state, props) => {
return {
isFetching: state.isFetching,
categories: state.categories
}
}
省略了一些可读性代码。
我也试过这个并接收TypeError:dispatch不是函数
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
}
答案 0 :(得分:1)
更改
export const fetchCategoriesIfNeeded = (dispatch, getState) => {
到
export const fetchCategoriesIfNeeded = () => (dispatch, getState) => {
您的动作创建者需要返回一个动作(也就是一个带有type
键的对象)或函数(由redux-thunk提供)。你的函数签名让你传递了两个参数dispatch
和getState
,而第二个函数签名没有参数,但返回函数确实需要dispatch
和getState
通过redux-thunk。
您也可以将其写出来以避免混淆
export const fetchCategoriesIfNeeded = () => {
return (dispatch, getState) => {
// Do stuff
}
}
希望有所帮助!
答案 1 :(得分:0)
看起来你正在做一些奇怪的事情,你如何调用这个调度。
您也应该使用i
功能。
例如。像这样的东西:
mapDispatchToProps
和:
const mapDispatchToProps = (dispatch, props) => {
return {
onUpdate: dispatch(fetchCategories())
}
}
const mapStateToProps = (state, props) => {
return {
isFetching: state.isFetching,
categories: state.categories
}
}