React路由封装的实现浅析

React路由封装的实现浅析

目录

了解SAP和路由的概念

再说说路由

路由封装流程

了解SAP和路由的概念

SAP(single page web application)的意思是单页Web应用,正如前言所说,一般来说功能较为复杂都会涉及到页面跳转的功能,而传统的前端页面跳转往往是利用<a/>标签进行跳转,这种方式虽然可以实现功能,但是每次跳转到新的页面都会重新对页面的元素进行加载,这样其实对于用户来说是不太友好的。而单页Web应用则较好的解决了这个问题,因为SAP整个应用都是在一个页面上进行的,每次的页面跳转只涉及到页面中对应组件(模块)的更新操作,这样就在一定程度上让页面不需要加载重复的页面元素。

再说说路由

路由其实可以理解为是一个映射关系,即路径到组件或者函数的对应关系,比如说/home这个路径对应着Home这个首页组件,在React中,有react-router-dom这个官方维护的组件库来帮助我们处理项目中的路由问题,需要注意的是,我们用create-react-dom创建的react项目,默认是没有react-router-dom的,所以需要我们自己再额外下载到项目中。

路由封装流程

封装路由的文件组件 ,针对一级路由的封装操作,单独路由文件抽离出单独的文件中去

src中新建一个router文件夹,在文件夹新建index.js文件,路由配置文件迁移过去

router文件夹中新建mapRouter文件,路由配置转换成数组对象格式,参考Vue配置

index.js循环Route组件即可,二级路由配置先暂时在父组件中配置即可

注:文件夹的名称和文件的名字可以随便定义,无需完全按照上方流程来

index.js

import { default as React } from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import reportWebVitals from './reportWebVitals'; import {Routes} from '../src//router/index' const root = ReactDOM.createRoot(document.getElementById('root')); root.render( <Routes/> ); reportWebVitals();

router/index.js

//router/index.js文件 import { HashRouter as Router, Route, Switch } from "react-router-dom" import routes from './mapRoute'; //定义的路由函数直接挂载到主页面上去 const Routes = function () { console.log(routes); return ( <Router> <Switch> { routes.map((item,index)=>{ return ( <Route key={index} path={item.path} component={item.component}></Route> ) }) } </Switch> </Router> ) } export default Routes;

HashRouter as Router,这是给HashRouter起的别名,可以不写

router/mapRoute.js路由配置文件

import App from '../App'; import Detail from '../detail'; import Layout from "../admin/layout" import About from '../pages/About'; const routes = [ { path:"/about", title:"About", component:About, }, { path:"/admin", title:"管理后台", component:Layout, exact:false, },{ path:"/detail/:id", title:"detail", component:Detail, },{ path:"/", title:"App", component:App, } ] export default routes;

这样我们react中的路由就封装好了,他的原理是跟我们vue中的路由一样,把路由封装到一个文件中,然后我们就可以直接在这个里面添加路由,不同的是,vue中有一个children属性用来定义二级路由,而react中没有

我们在这个js文件中引入路由,然后在index文件中进行循环渲染,同时也减少了我们的代码量

不过需要注意的是,我们在react路由封装中不能使用二级路由,这是一个弊端,我们可以将二级路由定义在父组件中定义

到此这篇关于React路由封装的实现浅析的文章就介绍到这了,更多相关React路由封装内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    设计电脑系统封装|电脑系统封装教程

    设计电脑系统封装|电脑系统封装教程,,电脑系统封装教程不是的,只是虚拟机比较方便。物理机也可以的,只是要通过外界启动来ghost系统。 办法

    电脑系统封包|电脑系统怎么封装打包

    电脑系统封包|电脑系统怎么封装打包,,电脑系统怎么封装打包1、下载一个虚拟机(虚拟机比较方便操作),用虚拟机7版本。2、下载一个纯净版的系统

    电脑系统热封装|笔记本封装

    电脑系统热封装|笔记本封装,,笔记本封装通俗理解可以认为是CPU安装在主板上的方式比如一些一体机和笔记本里BGA封装是焊接死的,不好更换。

    React解决长列表方案|react-virtualized

    React解决长列表方案|react-virtualized,元素,过程,github地址高效渲染大型列表的响应式组件 使用窗口特性,即在一个滚动的范围内,呈现你

    如何封装组件vue

    如何封装组件vue,组件,函数,封装,复用,组件开发,维护,Vue 是一种流行的 JavaScript 框架,它可以帮助开发者快速构建交互式的 Web 应用。Vue 的一

    封装方法的快捷键|快捷指令封装

    封装方法的快捷键|快捷指令封装,,快捷指令封装如果你使用的是贴片元器件那么你把封装打散并移动位置后将存在很大风险导致元器件无法正常

    nodejs Controller层 封装

    nodejs Controller层 封装,操作,还可以,作者:短工邦技术部 - 陈文哲封装了MODEL层后,我们要操作哪张表,就定义对应的MODEL变量出来就行了。但

    ReactOS是什么

    ReactOS是什么,审查,开发者,通用,开放源码,项目,维护,  ReactOS是一个开发与Windows NT和Windows 2000 应用程序、硬件驱动程序兼容的开源操