如何仅渲染页眉、页脚、菜单一次且仅用于使用 react js 的私有路由?

里奥·布鲁诺

我需要满足这两个条件,但每次我处理一个,我总是违反另一个。

我有 3 个组件(页眉、菜单、页脚),它们只需要为私有路由组件渲染一次。

它们是类组件,它们的状态会在用户登录时接收从本地存储中检索到的一些数据。

如果我将它们放在 app 组件中,在路由组件周围,我会满足“渲染一次”的要求,但是当非私有路由传递给路由组件时,它们会被渲染。

如果我将它们放置在路由组件中,在私有路由周围,我满足了后者的要求,但是每次渲染私有路由组件时都会重新渲染它们。

我怎样才能满足这两个要求?

提前致谢。

德鲁里斯

您可以将页眉、菜单和页脚组件渲染到与您的私有路由相同路径的路由中。一定要做到这一点之内Router,但外面的任何Switch部件。Router 包括性比赛和呈现的路线(即所有比赛),而Switch 完全匹配,并呈现路线(即在第一场比赛)。

例子:

<Router>
  <Route
    path={["/private/path/1", "/private/path/2", ....]}
    component={Header}
  />
  <Route
    path={["/private/path/1", "/private/path/2", ....]}
    component={Menu}
  />
  <Switch>
    ... all regular and private routes
  </Switch>
  <Route
    path={["/private/path/1", "/private/path/2", ....]}
    component={Footer}
  />
</Router>

您可以通过在数组中定义您的私有路由来减少/增加 DRY。

const privateRoutes = ["/private/path/1", "/private/path/2", ....];

...

<Router>
  <Route
    path={privateRoutes}
    component={Header}
  />
  <Route
    path={privateRoutes}
    component={Menu}
  />
  <Switch>
    ... all regular and private routes
  </Switch>
  <Route
    path={privateRoutes}
    component={Footer}
  />
</Router>

演示

编辑 how-to-render-header-footer-menu-only-once-and-only-for-private-routes-with-r

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用React,React Hooks的私有路由

react redux:私有路由不渲染布局

React 中私有路由上的组件重新渲染

如何在 React 的私有路由中重定向?

如何在 React 中構建私有路由

在具有私有路由的React Router Dom中使用渲染

Redux(用户身份验证)更新后,React渲染私有路由

如何在 react-router-dom@v6 中使用私有路由

如何在重定向到 React 中的私有路由之前解决承诺?

如何使用 TypeScript 和 React-Router 4、5 或 6 重写受保护/私有路由?

我可以在React Router的交换机内部使用高阶私有路由组件吗?

反应路由器私有路由未渲染

私有路由 React Router 和 Redux

Next.js:在實現私有路由時如何防止重定向前未授權路由/頁面的閃爍?

React路由器私有路由正在访问它不应该访问的路由

如何检查给定值是私有路由中的JWT?

React Router-我是否应该一次渲染所有路由?

React 4.0.0 BrowserRouter 渲染所有路由

具有私有路由的React Router呈现空白页

React 中的自定义钩子和私有路由立即导航到登录

将url参数传递给私有路由_ react Router

通过Typescript和React在私有路由中传递组件道具

React Router嵌套路由-当没有路由匹配时如何重定向

使用带有私有路由的上下文 API 响应登录

如何强制 ember.js 在呈现索引路由之前完全加载所有路由?

与AuthContext组件一起使用私有路由后出现问题

Next.js仅使用一个getServerSideProps捕获来自索引的所有路由

使用httpOnly cookie时如何保护SPA中的私有路由

访问节点中的私有路由时如何自动保持?