在兄弟组件之间导航时,useNavigate 不加载页面
useNavigate doesn't load page when navigating between siblings component
我正在使用 react-router-dom v6
开发一个 react-js 应用程序
我尝试简化我的框架以使其更清晰。
MainRouter.js
<BrowserRouter>
<NavBar/>
<Routes>
<Route exact path="/" element={<HomePage/>}></Route>
<Route path="item" element={<ShowItem/>}>
<Route path=":itemId" element={<ShowItem/>}>
</Route>
</Route>
</Routes>
导航栏包含一个搜索栏 s.t。我可以搜索不同的项目:“item/1”,“item/2”,...为了简单起见,我用一个按钮替换了搜索栏,该按钮总是尝试重定向到项目 12
NavBsr.js
return (
[...]
<button onClick={()=>navigate("/item/12")}>Click</button>
);
如果我在除“item/*”之外的任何页面中,导航会按预期工作。前任。如果我在“主页”,按钮会重定向到“item/12”
但是,如果我的当前页面是“item/*”,就会出现奇怪的行为,例如。 “item/1”。在这种情况下,如果我按下按钮,url 会更改为“item/12”,但内容不会加载:只有在我手动刷新页面时才会加载正确的内容
感谢任何建议
ShowItem
组件应该“侦听”对 itemId
路由参数的更改,以便它可以处理获取数据或 运行 任何依赖于此值的逻辑。
使用依赖于 itemId
路由参数的 useEffect
挂钩。
示例:
const { itemId } = useParams();
useEffect(() => {
if (itemId) {
// handle logic using new itemId value
}
}, [itemId]);
我正在使用 react-router-dom v6
开发一个 react-js 应用程序我尝试简化我的框架以使其更清晰。
MainRouter.js
<BrowserRouter>
<NavBar/>
<Routes>
<Route exact path="/" element={<HomePage/>}></Route>
<Route path="item" element={<ShowItem/>}>
<Route path=":itemId" element={<ShowItem/>}>
</Route>
</Route>
</Routes>
导航栏包含一个搜索栏 s.t。我可以搜索不同的项目:“item/1”,“item/2”,...为了简单起见,我用一个按钮替换了搜索栏,该按钮总是尝试重定向到项目 12
NavBsr.js
return (
[...]
<button onClick={()=>navigate("/item/12")}>Click</button>
);
如果我在除“item/*”之外的任何页面中,导航会按预期工作。前任。如果我在“主页”,按钮会重定向到“item/12”
但是,如果我的当前页面是“item/*”,就会出现奇怪的行为,例如。 “item/1”。在这种情况下,如果我按下按钮,url 会更改为“item/12”,但内容不会加载:只有在我手动刷新页面时才会加载正确的内容
感谢任何建议
ShowItem
组件应该“侦听”对 itemId
路由参数的更改,以便它可以处理获取数据或 运行 任何依赖于此值的逻辑。
使用依赖于 itemId
路由参数的 useEffect
挂钩。
示例:
const { itemId } = useParams();
useEffect(() => {
if (itemId) {
// handle logic using new itemId value
}
}, [itemId]);