【发布时间】:2021-12-24 16:31:07
【问题描述】:
我正在尝试从导航元素中打开嵌套路由。 应用程序本身在 /app 下运行(因此我将任何不存在的 URL 重定向到 /app)。 在 /app Route 内呈现的布局组件中,我正在创建主导航以及最终应该是内容的 Routes。但是,一旦我单击“搜索”或“查看”,URL 就会更改为正确的路径,但会立即将我重定向到 /app,就好像“搜索”和“查看”路由本身不存在一样。
小例子:
https://codesandbox.io/s/fragrant-field-ygwbf
App.tsx
<BrowserRouter>
<Routes>
<Route path="/app" element={<Layout />} />
<Route path="*" element={<Navigate to="/app" />} />
</Routes>
</BrowserRouter>
布局.tsx
const Layout = () => {
const navigate = useNavigate();
const handleSearchClick = (e: any) => {
e.preventDefault();
// do some tasks
navigate("inventory/search");
};
const handleViewClick = (e: any) => {
e.preventDefault();
// do some tasks
navigate("inventory/view");
};
return (
<div>
<nav>
<button onClick={handleSearchClick}>Search</button>
<button onClick={handleViewClick}>View</button>
</nav>
<Routes>
<Route path="/users">
<Route path="about" element={<p>example</p>} />
</Route>
<Route path="/inventory">
<Route path="search" element={<Search />} />
<Route path="view" element={<View />} />
</Route>
</Routes>
The content of search / view should now be displayed below the
Buttons
</div>
);
};
感谢您的建议
【问题讨论】:
标签: javascript reactjs react-router react-router-dom