无法调用`bindActionCreators`,因为`Action` [1]与`ActionCreator`不兼容

时间:2018-07-08 17:33:00

标签: reactjs redux react-redux flowtype flow-typed

我有一个React-Redux应用程序,并且我在使用Flow作为类型(我已经遵循官方指南here)。一切正常,但我不断收到此烦人的错误消息,无法解决:

  

无法调用bindActionCreators,因为Action 1ActionCreator不兼容

错误出现在主要组件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
}

有人知道这个错误的原因是什么?也许只是流?

2 个答案:

答案 0 :(得分:0)

只需在mapDispatchToProps中返回bindActionCreator:

const mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators(actions, dispatch)

我已阅读并使用此博客文章来设置Flow / React / Redux:

type checking react redux

答案 1 :(得分:0)

我今天也遇到了这个错误。这是一个奇怪的错误,因为即使我在其他文件上具有相同的模式,我也只会在其中一个文件上收到此错误。我所做的从node@6切换到node@8,它为我解决了错误。但是,我仍然感到奇怪,为什么我只在特定文件上而不是在其他大多数具有相同代码的错误上出现错误。