react-router中公共部分Header和SideBar的编写方式

2023-10-10 11:32

本文主要是介绍react-router中公共部分Header和SideBar的编写方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

react-router中公共部分Header和SideBar的编写方式

初学react-router,在项目中涉及登录页面是独立的,其他页面拥有共同的HeaderSideBar组件,在这里把这两个公共部分封装到App中。

一种实现方式,把App通过import到每个页面,对每个页面进行封装。
Routes定义如下:

    <ConnectedRouter history={history}><div><Route exact path="/login" component={LoginPage} /><Route exact path="/" component={privateRoute(App)} /><Route path="/users" component={privateRoute(UserListPage)} /><Route path="/chpwd" component={privateRoute(ChpwdPage)} /><Route path="/user" component={privateRoute(User)} /><Route path="/logout"  onEnter={props.logout} /></div></ConnectedRouter>

在调试时,发现在每个页面的render中需要用App包装,比较繁琐,同时每个页面使用Router跳转时,
HeaderSideBar组件在没有变化时,也在重复渲染。

如果使用下面方法编写Routes,可以解决公共部分不需要重复渲染,同时每个页面不必用App单独封装。

    <ConnectedRouter history={history}><div><Route exact path="/login" component={LoginPage} /><Route exact path="/" component={privateRoute(App)} /><Route path="/app" component={privateRoute(App)} /><Route path="/app/users" component={privateRoute(UserListPage)} /><Route path="/app/chpwd" component={privateRoute(ChpwdPage)} /><Route path="/app/user" component={privateRoute(User)} /><Route path="/logout"  onEnter={props.logout} /></div></ConnectedRouter>

由于Route是可以多个同时匹配的一起使用,比如: ‘/app/users’, 会同时渲染’/app’和’/app/users’两个路由模块。在这里’/app’模块是公共部分,当无数据变化时,react可以自行判断避免重复渲染。

第三种方法是把路由嵌入到页面layout中,把对应路由放在页面对应的位置。

<Provider store={store}><ConnectedRouter history={history}><div id="application"><Route exact path="/login" component={LoginPage} />{devTools}<HeaderPage /><div className="container"><nav className="nav left"><LeftPage /></nav>{/* <TopMenu items={menuItems} /> */}<section className="main"><Route path="/users" component={privateRoute(UserListPage)} /><Route path="/chpwd" component={privateRoute(ChpwdPage)} /></section></div></div></ConnectedRouter></Provider>

这篇关于react-router中公共部分Header和SideBar的编写方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/180157

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处