history.push() не работает — обновление URL-адреса, но не перенаправление

#reactjs

Вопрос:

Я видел несколько ответов на этот вопрос, но все еще не мог понять

Я использую

 `"  "react-router": "^5.2.1",
    "react-router-dom": "^5.2.1",`
 

// app.js

 import history from "./history";
import { Router } from 'react-router';

export const App = () => {
  return (
    <ReduxProvider store={store}>
      <Router history={history}>
        <div>
          <Route path="/first/" component={MN} />                
          <Route path="/test/" component={Test} />
        </div>     
      </Router>
    </ReduxProvider>
  );
};
 

// history.js

 import { createBrowserHistory } from 'history';

export default createBrowserHistory();
 

//вызов компонента

 import history from "./history";
....

history.push('mn/testing')
 

//mn.js

 import history from "../history";
const Mn = () => {
  return (
    <div>
       <Router history={history}>
        <Route exact path="*/testing" component={DashBoard} />
        
        />
      </Router>
     
    </div>
  );
 

Изменить: У меня есть вложенные маршруты, это создает ошибку?

Комментарии:

1. Вы можете попробовать с import { Router } from 'react-router-dom'

2. @Asifvora это не работает

3. Вы установили react-router-dom и настроили?

4. @Asifvora да, у меня есть. Это изменение URL-адреса, но не загрузка страницы

5. @Asifvora обновил мои вопросы. пожалуйста, проверьте

Ответ №1:

Вы должны попробовать использовать useHistory() крючок, предоставленный react-маршрутизатором

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

function HomeButton() {
  const history = useHistory();

  function handleClick() {
    history.push("/home");
  }

  return (
    <button type="button" onClick={handleClick}>
      Go home
    </button>
  );
}
 

Комментарии:

1. это приводит к ошибке : react-dom.development.js:336 Неперехваченная ошибка типа: функция.применить не является функцией