如何防止整个页面/Navbar重新加载,我只想在不重新加载整个页面的情况下加载里面的组件。我在下面提到了这两个组成部分。
App.js
import { useState } from 'react';
import Navbar from './Navbar'
import {BrowserRouter as Router, Routes, Route} from "react-router-dom";
import Home from './Home';
import ToDoList from './ToDoList';
import Jobs from './Jobs';
const App = () => {
return(
<>
<Router>
<Navbar />
<Routes>
<Route path='/' element={<Home />}/>
<Route path= '/todolist' element={<ToDoList />}/>
<Route path= '/jobs' element={<Jobs/>}/>
</Routes>
</Router>
</>
)
}
export default App
Navbar.js
const Navbar = () => {
return(
<nav>
<ul>
<a href="/"></a>
<li>
<a href="/todolist">ToDoList!</a>
</li>
<li>
<a href="/jobs">Jobs</a>
</li>
</ul>
</nav>
)
}
export default Navbar
Navbar不会重新响应您的方法,因为它位于路由器上方。因此,对于任何更改,只有路由器组件才会被渲染。但这里的问题是您使用的是a
标签,不应该在这里使用,因为React是SPA,您需要使用<link to="/url">Text</link>
Doc
因此,在Navbar.js中,只需使用适当的道具将a
标记更改为link
,它就不会重新发布。除非父组件要重新发送。
import {Link} from "react-router-dom";
const Navbar = () => {
return(
<nav>
<ul>
<link to="/"></link>
<li>
<link to="/todolist">ToDoList!</link>
</li>
<li>
<link to="/jobs">Jobs</link>
</li>
</ul>
</nav>
)
}
export default Navbar