reactjs - 如何在 Reach Router 中使用不同的布局?

标签 reactjs routes react-router reach-router

我有一个应用程序,其中有 N 个不同的布局(例如 BeforeLoginMainLayoutSomeElseLayout、等)。

每个布局都是一个 HTML 标记组件,应包装页面组件,例如 SettingsProfile 等。

我需要能够为我的每条路线(或一组路线)分配特定的布局。

例如,我想要网址

/register
/info/*
/about

...使用 BeforeLogin 布局组件(作为其子组件),以及

/dashboard
/profile/*
/settings/*

...使用MainLayout

此外,某些 URL(例如 /)可能会在用户登录之前使用一种布局,而在用户登录之后使用另一种布局。但我认为,一旦主要问题得到解答,就可以通过条件渲染来实现这一点。

所以问题是 - 我该怎么做?

(当然,除了显式渲染每个页面组件中的布局之外,我希望我的组件与布局无关)

谢谢!

附注对于那些错过的人,问题是关于 Reach router,而不是 React Router

最佳答案

您可以轻松创建多个 HOC其中每个代表您的布局组件之一。然后你只需用所需的布局包装你想要的组件:

const withMainLayout = (Component) => (props) => {
    return (
        <MainLayout>
            <Component {...props} />
        </MainLayout>
    )
}

然后你会像这样使用它

const LayoutDashboard = withMainLayout(DashboardComponent);

通过这种方式,您可以创建 X 布局和相应的 HOC,然后只包装所需的组件。

关于reactjs - 如何在 Reach Router 中使用不同的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58057344/

相关文章:

asp.net-mvc - ASP.NET MVC AcceptVerbs 和注册路由

heroku - Play Framework 重定向错误

reactjs - 如何在 react 中更新导航栏

reactjs - 使用 testing-library 和 jest 的 React 组件抛出的测试错误

javascript - react-router-dom 不工作只是渲染 "/"

reactjs - 解决似乎没有意义的 ESLint/React/Redux(Airbnb 配置)错误

ReactJS 在成功声明时重定向到另一个页面不起作用

reactjs - Nuka-旋转木马自定义箭头按钮

javascript - 无法绑定(bind)到 'routerLink',因为它不是已知的 native 属性

javascript - 在 React.js 中调用外部组件方法的正确方法