【发布时间】:2022-02-16 23:35:12
【问题描述】:
<BrowserRouter>
<Routes>
<Route path="/" element={<App />}>
<Route path="object" element={<Navigate to="/object/new" />} />
<Route path="object/:objId" element={<ObjEditor />} />
<Route path="object/new" element={<ObjEditor />} />
<Route index element={<Navigate to="/object/new" />} />
</Route>
使用 react 路由器,您可以导航到 URL /object/1234 的对象。 <ObjEditor> 将在渲染时从数据库中获取数据。我希望如果您在 URL 中输入未知的objId,地址将更改为object/new,而不会导致重新渲染。
我尝试从 useEffect 挂钩调用 react 路由器的 navigate("/object/new") 函数,但由于数据获取是异步的,它甚至会从数据库中确实存在的 objId 导航离开。
我在这里缺少什么?谢谢。
【问题讨论】:
-
为什么不在 ObjEditor 组件内部导航,如果 id 不存在,在 fetch 回调中?
-
@MWO 我最终大致进入了那个球场。谢谢:)
标签: reactjs asynchronous react-hooks react-router use-effect