React Router跳转后页面不刷新怎么办?
我在用 React Router 做单页应用,点击链接跳转到新路由,但组件没重新渲染,数据还是旧的。比如从 /user/1 跳到 /user/2,页面内容没变。
我试过用 useEffect 监听 location.pathname,但有时候还是不触发。是不是应该用 key 强制重建组件?
这是我的路由写法:
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';
import UserProfile from './UserProfile';
function App() {
return (
<BrowserRouter>
<nav>
<Link to="/user/1">User 1</Link>
<Link to="/user/2">User 2</Link>
</nav>
<Routes>
<Route path="/user/:id" element={<UserProfile />} />
</Routes>
</BrowserRouter>
);
}
在 UserProfile 组件里,我只在 useEffect 里根据 params.id 请求数据,但切换 ID 时没重新请求。
改成这样:
或者更暴力的方式,给路由加 key 强制重建组件: