1

我已经尝试了几个小时来解决这个问题,但无法取得进展。

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

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);

我的 App.js 看起来像:

function App() {
  return (
    <div className='App'>
      <TrafficLight />
    </div>
  );
}

我正在用 Provider 包装应用程序,如下所示:

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

任何帮助表示赞赏。

4

2 回答 2

0

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

const mapDispatchToProps = (dispatch: any) => {
    return {
        changeGreen : bindActionCreators<any, any>(changeGreen , dispatch)
    }
}

然后你会这样称呼它 -this.props.changeGreen()

于 2019-10-14T17:01:58.237 回答
0

想通了,我没有在渲染语句之前初始化动作创建者。

通过在渲染语句之前添加它来修复它

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

于 2019-10-14T16:59:57.033 回答