【发布时间】:2021-09-21 14:11:37
【问题描述】:
如何渲染组合的Route 组件
上面例子的底线是在下面的代码中,Wrapped 路由永远不会渲染它的元素
const App = () => (
<Routes>
<Wrapped/>
<Route path="/inline" element={<span >Inline works</span>} />
</Routes>
);
const Wrapped = () => <Route path="/wrapped" element={<span>wrapped</span>} />
有没有办法使用带有 react-router v6 的 Route 组件进行这种组合?还是 react-router v6 只支持Route 直接嵌套在Routes 组件中?
编辑,更具体地说,我正在尝试获得使用ProtectedRoute 组件的建议,其中包括:
type Props = {
element: ReactElement;
redirectRoute: string;
} & RouteProps;
const ProtectedRoute = ({element, redirectRoute, ...rest}: Props) => {
const {isAuthenticated} = useAuth();
<Route {...rest} element={isAuthenticated() ? element : <Navigate to={redirectRoute}/>}/>
}
编辑: 似乎这曾经在旧的 beta 版本中工作,所以这可能是一个错误。目前最新版本是 6.0.0-beta.4 & 我记录了一个问题: https://github.com/remix-run/react-router/issues/8066
【问题讨论】:
-
请在问题本身中包含相关代码。还要描述你为什么说不起作用 - 它是否会引发错误等。
-
它不会渲染路线,为了清楚起见,我已经编辑了问题。
标签: javascript reactjs react-router react-router-dom