React router V5 memperbarui URL tetapi tidak menyegarkan halaman
Aug 19 2020
react router tidak memperbarui tampilan tetapi mengubah 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;
Dan ini adalah App.js saya
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;
Apa yang telah saya coba:
- Saya telah mencoba mengekspor semua komponen yang saya render di dalam Router dengan withRouter. masih halaman tidak memuat ulang.
- Saya telah mencoba membuat komponen router menjadi komponen tingkat atas tetapi tidak berhasil.
- Saya telah mencoba menjadikan item li sebagai tautan, tetapi itu tidak melakukan apa yang saya inginkan.
- Saya telah mencoba solusi seperti memasukkan sakelar di atas tag tautan, dan menghapus sakelar dari tag router tetapi tetap tidak ada yang berhasil.
- Saya juga mencoba mengganti urutan rute untuk membuat rumah di ujung rute. Tetap tidak ada.
Jawaban
MosiaThabo Aug 19 2020 at 16:50
Silakan coba dua hal ini:
- Pertama-tama, pastikan urutan Rute Anda adalah sebagai berikut:
<Switch>
<Route path="/about" component={About} />
<Route path="/career" component={Career} />
<Route path="/notfound" component={notFoundPage} />
<Route exact path="/" component={Home} />
</Switch>
- Hapus
<Router>
bagian dalam Anda<Nav>
dan bungkus semuanya<App>
dengan<Router>
... Seperti ini:
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>
);
}
Saya pikir perlu dicatat bahwa menurut pengalaman saya, saya menyadari bahwa <Router>
hanya mengharapkan 1 anak. jadi dalam kasus Anda, Anda menggunakan <Router>
dua kali.
Saya mungkin juga ingin menyederhanakannya lebih jauh dengan meletakkan <Router>
file di index.js Anda:
ReactDOM.render(
<Router>
<App />
</Router>,
containerElement
);
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'