reactjs – React Router v4具有多种布局

前端之家收集整理的这篇文章主要介绍了reactjs – React Router v4具有多种布局前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我的公共布局中渲染我的一些路线,以及我的私人布局中的其他一些路线,是否有一个干净的方法来做到这一点?

示例显然不起作用,但我希望大致解释我正在寻找的内容

<Router>

  <PublicLayout>
    <Switch>
      <Route exact path="/" component={HomePage} />
      <Route exact path="/about" component={AboutPage} />
    </Switch>
  </PublicLayout>

  <PrivateLayout>
    <Switch>
      <Route exact path="/profile" component={ProfilePage} />
      <Route exact path="/dashboard" component={DashboardPage} />
    </Switch>
  </PrivateLayout>

</Router>

我想要切换某些路由的布局,如何使用新的路由器做到这一点?

嵌套路由不再有效,并给我这个错误

You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored

编辑:布局包裹整组路线也意味着只要您保留在同一个私人/公共路线组中,这些布局只会呈现一次.如果您的布局必须从您的服务器获取某些东西,这是一个大问题,因为如果您使用布局包装每个页面,这将发生在每个页面更改上.

我为此做的是创建一个简单的组件,为Route组件添加一个额外的属性,即布局:
function RouteWithLayout({layout,component,...rest}){
  return (
    <Route {...rest} render={(props) =>
      React.createElement( layout,props,React.createElement(component,props))
    }/>
  );
}

然后在你的情况下你的路线将是这样的

<Switch>
    <RouteWithLayout layout={PublicLayout} path="/" component={HomePage}/>
    <RouteWithLayout layout={PublicLayout} path="/about" component={AboutPage}/>
    <RouteWithLayout layout={PrivateLayout} path="/profile" component={ProfilePage}/>
    <RouteWithLayout layout={PrivateLayout} path="/dashboard" component={DashboardPage}/>
</Switch>
原文链接:https://www.f2er.com/react/301319.html

猜你在找的React相关文章