在使用mapDispatchToProps初始化之前,Redux无法访问操作创建者

在使用mapDispatchToProps初始化之前,Redux无法访问操作创建者,redux,react-redux,Redux,React Redux,我已经想了好几个小时了,但是没有进展 问题:我在这一行遇到错误“初始化前无法访问”: const mapDispatchToProps = { changeGreen }; 我正在从索引导出我的动作创建者,如下所示: export const changeGreen = () => { return { type: GREEN_ON }; }; 我正在导入MyComponent.js,如下所示: import { changeGreen } from "./index"

我已经想了好几个小时了,但是没有进展

问题:我在这一行遇到错误“初始化前无法访问”:

const mapDispatchToProps = { changeGreen };
我正在从索引导出我的动作创建者,如下所示:

export const changeGreen = () => {
  return {
    type: GREEN_ON
  };
};
我正在导入MyComponent.js,如下所示:

import { changeGreen } from "./index";
const mapDispatchToProps = { changeGreen };

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(MyComponent);
我将映射到组件文件中的dispatch,如下所示:

import { changeGreen } from "./index";
const mapDispatchToProps = { changeGreen };

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(MyComponent);
我的App.js看起来像:

function App() {
  return (
    <div className='App'>
      <TrafficLight />
    </div>
  );
}
函数应用程序(){
返回(
);
}
我正在使用提供商包装应用程序,如下所示:

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById("root")
);
ReactDOM.render(
,
document.getElementById(“根”)
);

感谢您的帮助。

解决了这个问题,在render语句之前我没有初始化动作创建者

通过在render语句之前添加此项修复了此问题

changeGreen = () => {
    this.props.changeGreen();
  };


你需要将你的动作映射到道具和调度,它应该如下所示

const mapDispatchToProps = (dispatch: any) => {
    return {
        changeGreen : bindActionCreators<any, any>(changeGreen , dispatch)
    }
}
const-mapDispatchToProps=(调度:任意)=>{
返回{
changeGreen:bindActionCreators(changeGreen,调度)
}
}
然后您可以这样称呼它-
this.props.changeGreen()