react-router,属性“ history”未定义

时间:2018-08-31 06:23:27

标签: reactjs react-router react-router-v4 browser-history react-proptypes

在我的React App中,我正在使用react-router-dom,并且在触发功能后的某个组件中,我想路由到首页。 但是我得到了错误

The prop `history` is marked as required in `GameElements`, but its value is `undefined`.
    in GameElements (created by Connect(GameElements))

当然还有在致电Uncaught TypeError: Cannot read property 'push' of undefined

之后

这是我的index.js

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

我从首页进入了这样的组件

<Button color="blue" as={Link} to="/GameInit">
  START GAME
</Button>

现在从GameInit起,我想回到首页

  cancel = () => {
    const { history, cancelGame } = this.props;
    cancelGame();
    history.push("/HomePage");
  };

GameElements.propTypes = {
  cancelGame: PropTypes.func.isRequired,
  history: PropTypes.shape({
    push: PropTypes.func.isRequired
  }).isRequired,
};

取消游戏正常工作,并且其减速器应按要求操纵状态

1 个答案:

答案 0 :(得分:2)

GameElementswithRouter的临时文件,将其包含在您的文件中

import { withRouter } from 'react-router'

现在在底部导出组件的位置。

export default withRouter(Connect(GameElements));

您可以在docs中阅读更多内容。