我有一个React-Redux应用程序,并且我在使用Flow作为类型(我已经遵循官方指南here)。一切正常,但我不断收到此烦人的错误消息,无法解决:
无法调用
bindActionCreators
,因为Action
1与ActionCreator
不兼容
错误出现在主要组件App中的mapDispatchToProps
中:
App.js
import { bindActionCreators } from 'redux'
import * as actions from '../actions/index'
import type { Action, Dispatch } from '../actions/index'
// ... more imports
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
boundActionCreators: bindActionCreators(actions, dispatch)
}
}
// ... mapStateToProps, class definition and so on
然后我将所有动作定义在动作/索引中,如下所示:
actions / index.js
export type ToggleLoading = {
type: "TOGGLE_LOADING",
loading: boolean
}
function toggleLoading (loading: boolean): ToggleLoading {
return { type: 'TOGGLE_LOADING', loading }
}
export type Action = ToggleLoading | ...
export type Dispatch = (action: Action | ThunkAction | PromiseAction | Array<Action>) => any
export type PromiseAction = Promise<Action>
export type ThunkAction = (dispatch: Dispatch, getState: GetState) => any
export{
toggleLoading
}
有人知道这个错误的原因是什么?也许只是流?
答案 0 :(得分:0)
只需在mapDispatchToProps中返回bindActionCreator:
const mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators(actions, dispatch)
我已阅读并使用此博客文章来设置Flow / React / Redux:
答案 1 :(得分:0)
我今天也遇到了这个错误。这是一个奇怪的错误,因为即使我在其他文件上具有相同的模式,我也只会在其中一个文件上收到此错误。我所做的从node@6
切换到node@8
,它为我解决了错误。但是,我仍然感到奇怪,为什么我只在特定文件上而不是在其他大多数具有相同代码的错误上出现错误。