Ax0*_*x0n 20 javascript reactjs react-router-dom
我有一个具有以下功能的反应组件
const handleNavigate = (clientId) => {
console.log(clientId)
navigate(`/dashboard/clients/${clientId}`)
}
Run Code Online (Sandbox Code Playgroud)
console.log() 显示了我想要附加以在导航功能中使用的 ID。
并且
浏览器中的 URL正在更新。
但页面没有变化。
这适用于从 导航/dashboard/clients到/dashboard/clients/foo
但无法从 导航/dashboard/clients/foo到/dashboard/clients/bar
clientId 像这样传递到卡中......
const CompanyCard = (props) => {
const { client, showWatchlist, removeDisabled, showRemove, removeType } = props
...
}
Run Code Online (Sandbox Code Playgroud)
然后在卡里
<CardActionArea
onClick={() => handleNavigate(client._id)}
...
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢
在阅读了 @redapollos 的建议后,我尝试了Outlet,
useRoutes 方法...都不起作用。
import { useRoutes } from 'react-router-dom'
// then in the routes...
{ path: 'clientdetail/:id', element: <ClientDetail /> },
{ path: 'clientdetail/', element: <ClientDetail /> },
Run Code Online (Sandbox Code Playgroud)
这可能是由于使用了useRoutes钩子,但我仍在努力。
这里的另一个问题可能会更快得到答案 - /sf/answers/4900637311/
小智 19
我刚刚在 React Router Dom Docs v6 中读到这个解决方案:
import { useNavigate } from 'react-router-dom';
...
const navigate = useNavigate();
...
<Button onClick={() => navigate('../user', { replace: true })}>Register</Button>
Run Code Online (Sandbox Code Playgroud)
所以,基本上我../在路线和replace: true.
参考: https: //reactrouter.com/en/6.9.0/hooks/use-navigate
它对我有用,希望对你有用!(:
Enf*_* Li 16
navigate('/url')
navigate(0)
Run Code Online (Sandbox Code Playgroud)
替换url后,手动调用navigate(0)会自动刷新页面!
这适用于从 导航/same_path/foo到 的情况/same_path/bar。
对于正常情况(例如从 导航/home到 )/same_path/bar,navigate(0)即使在页面完成渲染后也会导致页面刷新。为了防止这种情况,你可以看看这个问题。
| 归档时间: |
|
| 查看次数: |
68024 次 |
| 最近记录: |