可以使用高阶组件(Higher-Order Component,HOC)来实现此目的。首先,定义两个不同的布局组件,每个布局组件都有自己的子组件。然后,使用HOC来包装需要保护的路由,根据条件选择不同的布局组件作为包装器的子组件。
示例代码如下:
// 定义两个不同的布局组件 const Layout1 = ({ children }) => { return (
const Layout2 = ({ children }) => { return (
// HOC,根据条件选择不同的布局组件作为包装器的子组件
const ProtectedRoute = ({ component: Component, layout: Layout, ...rest }) => {
return (
// 使用
// 注意:在使用ProtectedRoute时,需要传递component属性和layout属性。component属性指定需要保护的组件,layout属性指定使用哪个布局组件作为包装器的子组件。在路由渲染时,ProtectedRoute会先检查用户是否已经登录,如果没有则重定向到登录页面;如果已经登录,则根据传递的layout属性来选择不同的布局组件。