React routeur V5 mettant à jour l'URL mais pas actualisant la page
Aug 19 2020
le routeur de réaction ne met pas à jour la vue mais modifie l'URL.
Navbar.js :
import React from "react";
import logo from "../Assets/imgs/Logo/WHITELOGOkatman 1.png";
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
class Navbar extends React.Component {
render() {
return (
<div className="header">
<img className="logo" src={logo} alt="logo" />
<Router>
<nav>
<ul className="nav_links">
<Link to="/">
<li>Home</li>
</Link>
<Link to="/process">
<li>Process</li>
</Link>
<Link to="/career">
<li>Career</li>
</Link>
<Link to="/about">
<li>About</li>
</Link>
</ul>
</nav>
</Router>
</div>
);
}
}
export default Navbar;
Et voici mon App.js
import React from "react";
import "./App.css";
import "./Components/Styles/style.css";
import "bootstrap/dist/css/bootstrap.css";
import Navbar from "./Components/Navbar";
import About from "./Components/About";
import Home from "./Components/Home";
import Career from "./Components/Career";
import Footer from "./Components/Footer";
import notFoundPage from "./Components/404";
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
function App() {
return (
<div className="App">
<Navbar />
<Router>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/career" component={Career} />
<Route path="/notfound" component={notFoundPage} />
</Switch>
</Router>
<Footer />
</div>
);
}
export default App;
Ce que j'ai essayé :
- J'ai essayé d'exporter tous les composants que je rends à l'intérieur d'un routeur avec withRouter. la page ne s'est toujours pas rechargée.
- J'ai essayé de faire du composant routeur un composant de niveau supérieur, mais cela n'a pas fonctionné.
- J'ai essayé de faire des éléments li sous forme de liens, mais cela n'a pas fait ce que je voulais.
- J'ai essayé des solutions telles que l'inclusion d'un commutateur au-dessus des balises de lien et la suppression du commutateur de la balise du routeur, mais rien n'a fonctionné.
- J'ai également essayé de changer l'ordre des routes pour faire la maison à la fin des routes. Toujours rien.
Réponses
MosiaThabo Aug 19 2020 at 16:50
Veuillez essayer ces deux choses :
- Assurez-vous d'abord que l'ordre de votre Route est le suivant :
<Switch>
<Route path="/about" component={About} />
<Route path="/career" component={Career} />
<Route path="/notfound" component={notFoundPage} />
<Route exact path="/" component={Home} />
</Switch>
- Retirez
<Router>
l'intérieur de votre<Nav>
et enveloppez tout à l'intérieur<App>
avec<Router>
... Comme ceci :
function App() {
return (
<Router>
<div className="App">
<Navbar />
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/career" component={Career} />
<Route path="/notfound" component={notFoundPage} />
</Switch>
<Footer />
</div>
</Router>
);
}
Je pense qu'il vaut la peine de noter que d'après mon expérience, j'ai réalisé qu'il <Router>
n'attend qu'un seul enfant. donc dans votre cas vous avez utilisé <Router>
deux fois.
Je pourrais aussi vouloir le simplifier davantage en mettant votre <Router>
fichier in index.js :
ReactDOM.render(
<Router>
<App />
</Router>,
containerElement
);