Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >专用线旁边有多个不同的布局

专用线旁边有多个不同的布局
EN

Stack Overflow用户
提问于 2020-05-22 14:00:35
回答 1查看 387关注 0票数 0

我试图创建一个结构与多个不同的布局旁边的私人路线,以显示正确的内容基于用户的登录状态和分配的布局。目前我有3个不同的布局,但我可能会添加另一个在未来。

routes.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React from 'react';
import { LayoutOne, LayoutTwo, LayoutThree } from './layouts';
import RouteWithLayout from './components/RouteWithLayout/RouteWithLayout';
import Login from './components/Login/Login';
import Dash from './components/Dash/Dash';
import Home from './components/Home/Home';
import NotFound from './components/NotFound/NotFound';
import ErrorBoundary from './components/ErrorBoundary/ErrorBoundary';

const Routes = () => (
  <ErrorBoundary>
      <Switch>
          <RouteWithLayout
             component={Home}
             exact
             layout={LayoutOne}
             path="/"
             isPrivate={false}
          />
          <RouteWithLayout
             component={Dash}
             exact
             layout={LayoutTwo}
             path="/dash"
             isPrivate={true}
          />
          <RouteWithLayout
             component={Login}
             exact
             layout={LayoutThree}
             path="/login"
             isPrivate={false}
          />
          <Route component={NotFound}/>
      </Switch>
  </ErrorBoundary>
);

export default Routes;

RouteWithLayout.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React from 'react';
import { Route } from 'react-router-dom';
import { authService } from "./services/auth.service";

const RouteWithLayout = props => {

   const { layout: Layout, component: Component, private: isPrivate, ...rest } = props;
   const isLogged = authService.isLogged();

   return (
       <Route
       {...rest}
       render={matchProps =>
         isPrivate ? (
           isLogged ? (
             <Layout>
                <Component {...matchProps} />
             </Layout>
           ) : (
             <Redirect
               to={{
               pathname: "/login",
               state: { from: matchProps.location }
               }}
             />
           )
         ) : (
           <Layout>
              <Component {...matchProps} />
           </Layout>
         )
       }
      />
  )

};

export default RouteWithLayout;

请记住,我这样做是正确的,还是我应该采取一些其他/更好的方法,从而简化我一直试图实现的目标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 18:24:37

您可以使用多个选项来处理不同的布局。

如果您有多条共享公共布局的路线,那么您所采用的方法是很好的。

但是,如果您有许多针对不同路由的不同布局,则更好的做法是直接在各个组件中呈现Layout,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const Dash = () =>  (
   <LayoutOne>
       {/* Dash component code */}
   </LayoutOne>
)

您甚至可以对公共路由采用上面的方法,因为它更容易使用,并让Route组件做它实际做的事情。

另外,像Gatsby这样的框架实际上通过在每个页面中使用多个布局来处理多个布局,所以这是一个很好的遵循模式

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61956725

复制
相关文章
响应式布局与自适应式布局有什么不同
很多人会对响应式布局和自适应式布局产生混淆,这两者到底有着什么样的区别呢?因为不同于移动站,就事一个独立的站点,每个模块都有独立接口,但是Google一直以来就是推荐响应式设计的,至于为什么你可以参考此篇文章:移动端网站怎样做SEO优化?我们今天就来了解下二者之间是责骂定义的。
李洋博客
2021/06/15
3.1K0
@DependsOn & 控制多个(不同)的@Bean的加载顺序
我们都知道多个Bean加载是按照代码顺序来的。BeanA下载BeanB前面,那么BeanA是会有在BeanB前面示例化的。
收心
2022/11/14
7590
不同的GSE数据集有不同的临床信息,不同的分组技巧
Jimmy大神怎么说过,只有多做、多错,才能真正的掌握。所以下面通过几个实战来说明。
生信技能树
2019/11/11
9.3K0
replaceAll()如何同时替换多个不同的字符串(或多个符号)
正好我遇到过这个情况,就跟她分享了一下心得,解决问题后的她开心的像刚充完气儿一样。
陈哈哈
2020/07/03
5.7K0
管理不同 git 系统的多个 ssh-key
今天记录一下如何管理不同 git 系统下生成的 ssh-key。比如常用的 github 有一个 key,而公司搭建的 gitlab 又是一个不同邮箱生成的 key。那么这个时候该怎么办呢?
Originalee
2019/04/18
8390
mac上面配置多个不同仓库的SSH Key
同一台电脑会连接不同的远端仓库,github/gitlab等,就需要生成不同的SSH Key对应多个远端仓库。
新人小试
2020/03/27
3K0
针对不同场景的Python合并多个Excel方法
在辰哥看来,技术能够减少繁琐工作带来的枯燥,技术+实际=方便。最近辰哥也是在弄excel文件的时候发现手动去整理有点繁琐枯燥,想着技术可以代替我去处理这部分繁琐的工作那何乐而不为呢~~~
Python研究者
2021/08/13
2.3K0
针对不同场景的Python合并多个Excel方法
Android开发-Listview中显示不同的视图布局
在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能。convertView在Item为单一的同种类型布局时,能够回收并重用,但是多个Item布局类型不同时,convertView的回收和重用会出现问题。比如有些行为纯文本,有些行则是图文混排,这里纯文本行为一类布局,图文混排的行为第二类布局。单一类型的ListView很简单,下面着重介绍一下ListView包含多种类型视图布局的情形。
他叫自己MR.张
2019/07/01
2.3K0
【RecyclerView】 九、为 RecyclerView 设置不同的布局样式
① 自定义 RecyclerView.Adapter 泛型类型 : 适配器的泛型类型需要设置为 RecyclerView.ViewHolder , 这是所有 ViewHolder 的基类 ;
韩曙亮
2023/03/28
8930
【RecyclerView】 九、为 RecyclerView 设置不同的布局样式
Nginx为多个不同的静态资源配置不同的二级域名
有多个域名: dog.aimiter.com cat .aimiter.com … 需要映射到不同的静态资源目录: /var/www/html/dog /var/www/html/cat
Spaceack
2020/11/04
2.7K0
Nginx为多个不同的静态资源配置不同的二级域名
mysql 有4种不同的索引
主键索引(PRIMARY) 数据列不允许重复,不允许为NULL,一个表只能有一个主键 唯一索引(UNIQUE) 数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。 可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索引 可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索引 普通索引(INDEX) 可以通过 ALTER TABLE table_name ADD INDEX index_name (column); 创建普通索引 可以通过 ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3); 创建组合索引 全文索引(FULLTEXT) 可以通过 ALTER TABLE table_name ADD FULLTEXT (column);https://www.alwdzr.com 创建全文索引 索引并非是越多越好,创建索引也需要耗费资源,一是增加了数据库的存储空间,二是在插入和删除时要花费较多的时间维护索引
用户7737280
2020/09/09
9520
mysql 有4种不同的索引
hadoop不同版本有哪些
首次听到hadoop这次单词,相信很多人跟我当时是一样,不免心中画上一个大大的问号——这是什么东西?Hadoop是什么?百度百科的解释是:Hadoop是一个由Apache基金会所开发的分布式系统基础架构。换句话说就是hadoop是一个能够对大量数据进行分布式处理的软件框架。
IT小白龙
2018/09/18
1.7K0
hadoop不同版本有哪些
软件测试的类型有哪些?不同的类型有什么优势?
软件完成开发后都会进入软件开发测试,测试方法不到位会导致产品中的缺陷难以检测出,从而影响产品性能,为了提升产品的核心竞争力,为确保产品顺利上线使用,软件测试非常重要,那么测试的类型有哪些?不同的类型有什么优势?
用户8715145
2021/06/18
2.4K0
添加多个屏幕-创建格线布局
在上一节中,我们学习了如何使用按钮更改iPhone的屏幕。让我们进一步推动!我们将实现一个CollectionView,我们将能够切换到您想要的壁纸。该的CollectionView将是滚动的水平。
iOSDevLog
2019/06/17
2.9K0
添加多个屏幕-创建格线布局
rpm卸载多个有依赖的rpm包[通俗易懂]
[root@dev OOo_3.1.0_src]# rpm -qa libxml2*
全栈程序员站长
2022/11/08
2K0
bootstrap 徽章 菜单旁边显示数字
<a href="#">Mailbox <span class="badge">50</span></a>
用户5760343
2019/07/05
1.1K0
bootstrap 徽章 菜单旁边显示数字
编程语言Zig有什么与众不同的
编程语言专家曾对 Zig 编程语言的创造者 Andrew Kelley 说,在编译时运行代码是个蠢主意。尽管如此,Kelley 还是去实现了这个想法,而多年以后,这个蠢主意已经成为了 Zig 的招牌。这一特征在 Zig 中用关键字 comptime 标识,代表需要在编译时运行的代码或者是需要的变量。Zig 可以在编译时运行代码的能力让开发者们可以在不明确任何泛型或模板支撑的情况下,编写通用代码或是进行元编程。让我们来通过代码例子更直观地了解编译时运行是什么意思,以及其为什么重要。以这段简单的函数为例,在 a 和 b 两个数之间取最大值。不使用泛型或 comptime 代码的话,我们就需要将这个函数的具体变量类型写死,比如这里用的 Zig 中 32 位整数 i32 。
深度学习与Python
2022/11/28
3.5K0
编程语言Zig有什么与众不同的
1087 有多少不同的值 (20 分)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
韩旭051
2019/11/08
9580
点击加载更多

相似问题

边栏旁边有3个网格布局

216

布局设计布局x旁边的布局y

24

如何计算旁边有状态的多个范围?

111

布局和android有什么不同:布局

12

不同的ZODB blobstorage布局有什么不同?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文