如何使用 React router dom V6 在所有嵌套路由中隐藏组件?
How to hide a component in all nested routes with React router dom V6?
我想使用 react-router-dom v6 根据路由隐藏一个组件。我可以用确切的路径来实现它,但我也想将它隐藏在嵌套路由中。我这样试过:
{location !== "/dashboard/*" && <Header />}
但它只在页面http://localhost:3000/dashboard/*
上有效,这不是我想要的。我该如何解决这个问题?
这是完整代码:
const location = useLocation().pathname
const conditionLocation = location === "/dashboard" || location === "/dashboard/*"
return !conditionLocation && <Header />
路线:
// Packages
import React from "react"
import { Routes, Route } from "react-router-dom"
// User
import Dashboard from "../pages/admin/Dashboard"
import EditAccount from "../pages/admin/EditAccount"
function Switch() {
return (
<Routes>
<Route path="/dashboard" element={<Dashboard />} />
<Route path="/dashboard/edit" element={<EditAccount />} />
</Routes>
)
}
export default Switch
感谢您的帮助!
使用 javascript 正则表达式解决此问题:-
{!(location.match(/^\/dashboard.*$/gim)) && <Header />}
希望有用..
据我了解,您只想在特定路线上渲染 Header
组件 。您没有分享太多上下文,但我了解您 不想 想要在任何 [=14= 上呈现 Header
] 小路。您可以通过布局和 Outlet
组件来实现。
const HeaderLayout = () => (
<>
<Header />
<Outlet /> // <-- wrapped Route components render into outlet
</>
);
对于您想使用 Header
组件渲染的路由,将它们渲染到渲染 HeaderLayout
.
的路由中
<Routes>
<Route element={<HeaderLayout />}>
..... routes render into outlet with header
</Route>
<Route path="/dashboard" element={<Dashboard />} />
<Route path="/dashboard/edit" element={<EditAccount />} />
</Routes>
我想使用 react-router-dom v6 根据路由隐藏一个组件。我可以用确切的路径来实现它,但我也想将它隐藏在嵌套路由中。我这样试过:
{location !== "/dashboard/*" && <Header />}
但它只在页面http://localhost:3000/dashboard/*
上有效,这不是我想要的。我该如何解决这个问题?
这是完整代码:
const location = useLocation().pathname
const conditionLocation = location === "/dashboard" || location === "/dashboard/*"
return !conditionLocation && <Header />
路线:
// Packages
import React from "react"
import { Routes, Route } from "react-router-dom"
// User
import Dashboard from "../pages/admin/Dashboard"
import EditAccount from "../pages/admin/EditAccount"
function Switch() {
return (
<Routes>
<Route path="/dashboard" element={<Dashboard />} />
<Route path="/dashboard/edit" element={<EditAccount />} />
</Routes>
)
}
export default Switch
感谢您的帮助!
使用 javascript 正则表达式解决此问题:-
{!(location.match(/^\/dashboard.*$/gim)) && <Header />}
希望有用..
据我了解,您只想在特定路线上渲染 Header
组件 。您没有分享太多上下文,但我了解您 不想 想要在任何 [=14= 上呈现 Header
] 小路。您可以通过布局和 Outlet
组件来实现。
const HeaderLayout = () => (
<>
<Header />
<Outlet /> // <-- wrapped Route components render into outlet
</>
);
对于您想使用 Header
组件渲染的路由,将它们渲染到渲染 HeaderLayout
.
<Routes>
<Route element={<HeaderLayout />}>
..... routes render into outlet with header
</Route>
<Route path="/dashboard" element={<Dashboard />} />
<Route path="/dashboard/edit" element={<EditAccount />} />
</Routes>