Ошибка "Uncaught TypeError: history.pu sh is not a function" - PullRequest
0 голосов
/ 29 мая 2020

Разрабатываю панель навигации. Я написал функцию для переключения экранов и вызова ее кнопкой onClick. Я также обернул компонент в withRouter. Но возникает следующая ошибка:

Uncaught TypeError: history.pu sh is not a function "error.

Это мой код:

import { withRouter } from 'react-router-dom';

function Navigation(history) {
  const abc = path => {
    history.push(path);
  };

return(
<button onClick={() => abc('/user')}>User</button>
);}

export default withRouter(Navigation);

Спасибо

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Вы заключили компонент Navigation в оболочку withRouter, поэтому вам нужно будет получить доступ к объекту истории через свойства компонента. Вы можете деструктурировать свой реквизит, как показано ниже:

function Navigation({ history }) {
  const abc = path => {
    history.push(path);
  };

  return (
    <button onClick={() => abc('/user')}>User</button>
  );
}

export default withRouter(Navigation);

Поскольку вы работаете с функциональными компонентами, альтернативным способом работы будет использование хука useHistory, который избавит вас от лишних затрат. нужно обернуть ваш компонент withRouter:

import { useHistory } from 'react-router-dom';

function Navigation(props) {
  const history = useHistory();

  const abc = path => {
    history.push(path);
  };

  return (
    <button onClick={() => abc('/user')}>User</button>
  );
}

export default Navigation;
0 голосов
/ 29 мая 2020

Вы должны уничтожить все реквизиты, например Navigation({ history })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...