реакции-маршрутизатор, опора `история` не определена - PullRequest
0 голосов
/ 31 августа 2018

в моем приложении React я использую response-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 голосов
/ 31 августа 2018

Оберните вас GameElements это withRouter hoc, включите его в ваш файл

import { withRouter } from 'react-router'

Теперь внизу, куда вы экспортируете свой компонент, сделайте это.

export default withRouter(Connect(GameElements));

Вы можете прочитать больше здесь в документах .

...