pages>index.js   (路由的懒加载)

 1 //路由的懒加载
 2 import Loadable from "react-loadable"
 3 import Loading from "../common/loading"
 4
 5 const Home = Loadable({
 6     loader:()=>import("./home"),
 7     loading:Loading
 8 })
 9
10 const List = Loadable({
11     loader:()=>import("./list"),
12     loading:Loading
13 })
14
15 const Login = Loadable({
16     loader:()=>import("./login"),
17     loading:Loading
18 })
19
20 const Mine = Loadable({
21     loader:()=>import("./mine"),
22     loading:Loading
23 })
24
25 const Order = Loadable({
26     loader:()=>import("./order"),
27     loading:Loading
28 })
29
30
31 const INow = Loadable({
32     loader:()=>import("../components/iNow"),
33     loading:Loading
34 })
35
36
37 const Comming = Loadable({
38     loader:()=>import("../components/comming"),
39     loading:Loading
40 })
41
42
43 export {
44     Home,
45     List,
46     Login,
47     Mine,
48     Order,
49     INow,
50     Comming
51 }

router》index.js   路由的配置表

import {Home,List,Login,Mine,Order,INow,Comming
} from "../pages"//路由配置表//tabBar 的路由数组
export const TabBarRoutes = [  {id:1,path:"/home",icon:"\ue717",name:"首页",component:Home,meta:{auth:false},children:[  //二级路由
            {path:"/home/iNow",component:INow,name:"正在热映",},{path:"/home/comming",component:Comming,name:"即将上映",}]},{key:2,path:"/list",icon:"\ue61d",name:"列表",component:List,meta:{auth:false}},{key:3,path:"/order",icon:"\ue605",name:"订单",component:Order,meta:{auth:true}},{key:4,path:"/mine",icon:"\ue613",name:"我的",component:Mine,meta:{auth:true}}
]//没有tabBar的路由数组
export const NoTabBarRoutes = [{key:5,path:"/login",icon:"",name:"登陆",component:Login,}
]//数组的拼接,导出
//baseRoutes  是数组对象[{},{},{}]
export const baseRoutes = TabBarRoutes.concat(NoTabBarRoutes)

封装的方法解析,

utils>routerEach.js  //代码解析,  函数套函数,子函数执行来自 item

utils>routerEach.js  代码:

 1 import React, { Fragment } from "react";   //jsx语法
 2 import { Route, Redirect, Switch } from "react-router-dom";  //用到路由的
 3 //一个函数,通过入与出   达到渲染的目的
 4 export default (routes) => {  //传入的是一个数组对象,每一个对象都是一个路由的配置项
 5     //专门用来遍历子路由 //可以说二级路由的...
 6                                     let routeEach = (item) => {
 7                                         return <Route path={item.path}  render={() => {  //item.path 是路径,return返回的是一个jsx
 8                                             return (
 9                                                 <Fragment>  //  Fragment, 是react的内置组件,不会渲染,因为return返回的是一个jsx 对象
10                                                     <Route component={item.component} /> //这样是匹配任意,渲染任意
11                                                     <Redirect from={item.path} to={item.children[0].path} />//路由的重定向
12                                                     <Switch>  //作用是只匹配一个路由
13                                                         {  //子路由的遍历
14                                                             item.children.map((child, index) => {//child是每个元素的意思,index,数组下标
15                                                                 if (child.children) {  //这个的意思是,判断子路由下面还会不会有路由,
16                                                                     return routeEach(child)  //把这个子路由返回传入进入,,再次遍历执行渲染
17                                                                 } else {  //如果没有
18                                                                     return <Route path={child.path} key={index} component={child.component} />
19                                                                 }
20                                                             })
21                                                         }
22                                                     </Switch>
23                                                 </Fragment>
24                                             )
25                                         }} />
26                                     }
27
28     //这个是通过map 遍历渲染
29     return routes.map((item, index) => {   //先执行这块代码?
30         if (item.children) {  //当存在为真的时候,就会去执行上面的代码块
31             return routeEach(item);
32         } else {
33             return <Route path={item.path} key={index} component={item.component} />
34         }
35     })
36 }
37
38
39 /*
40
41     Fragment
42         react的内置组件
43
44         用来当做容器进行使用,特点是不会被渲染到页面上
45
46
47         这文件的封装思路是,通过传入数组对象(路由配置),然后导出匹配完好的  路由配置
48
49           <Route path="/detail" render={() => {  return <Detail />  }} />
50
51
52
53
54           这个文件是这样去走的:
55
56 */


//  tabBar 的创建及使用

tabBar的样式

转载于:https://www.cnblogs.com/yuanjili666/p/11556191.html

【react】 react---项目的-----------简单路由配置相关推荐

  1. C# MVC 项目下的路由配置-RouteConfig

    C# MVC 项目下的路由配置-RouteConfig 1. 设置备份全局路径下的路由 目的,我们在网站中域名后面输入参数,可以跳转到相应的controller,例如:www.innovsys.cn/ ...

  2. SpringCloud 微服务网关Gateway介绍及简单路由配置

    概述:什么是微服务网关?为了解决用户客户端在调用微服务系统中的多个消费者工程接口时,需要维护非常多的消费者应用接口地址等信息,以及可能存在不同应用见的调用跨域等问题,微服务网关组件随即出现.网关作为用 ...

  3. vscode 连接夜神模拟器 运行 react native项目 (很简单的方法)

    前言:我这种方式不需要过多配置,只是需要先启动Android studio ,之后再启动vsCode 准备阶段:下载夜神模拟器 1. 开启夜神服务 进入到夜神安装的bin目录下,执行 nox_adb. ...

  4. php zend 自动补全,Zend Framework自动加载、简单路由配置(Bootstrap.php)

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { /* * 自动加载 */ protected function _init ...

  5. Taro+react开发(83):taro路由配置

  6. 从零开始搭建React开发项目之抖音“剪映”——创作课堂(基础入门篇)

    前言 React是近几年来前端项目开发非常火的一个框架,其背景是Facebook团队的技术支持,市场占有率也很高,对于很多新手来说可能很多人都在犹豫是选react还是vue,如果时间充裕的话还是首选r ...

  7. centos 重启网卡_CentOS6 网络管理之网卡配置及简单路由设置

    CentOS6中关于网络配置的命令有很多,本文将介绍几个平时最长用的几个命令,以及网卡IP地址的配置和简单路由配置. 1.经常使用的查看IP地址命令为 ifconfig,不跟参数的情况下默认查看所有已 ...

  8. SpringCloud 微服务网关Gateway 动态路由配置

    概述:在上一章节<SpringCloud 微服务网关Gateway介绍及简单路由配置>中我们讲述了Gateway的最简单的路由配置方式.但是其中比较明显的问题就是我们在配置路由服务的地址时 ...

  9. React+TS学习和使用(三):React Redux和项目的路由配置

    开启学习react+ts,本篇主要是学习使用React Redux和项目的路由配置 一.React Redux 需求:使用TS+React Redux实现一个累加. A. 安装 $ yarn add ...

最新文章

  1. android餐厅管理系统,基于Android的餐厅管理系统的设计与实现
  2. 1019 General Palindromic Number (20分)_18行代码AC
  3. 基础概念总结(spring security、Quartz、JUnit测试)
  4. Android开发之EditText输入显示文字hint大小设置
  5. 前端学习(3025):vue+element今日头条管理-关于默认子路由的问题
  6. Android中的动画有哪几类?各自的特点和区别是什么?
  7. 002---设计表结构
  8. 一本通1613打印文章
  9. 开放源代码_您对开放源代码感兴趣了多少年?
  10. .NET Core 3.0 稳定版发布
  11. 将 React 作为 UI 运行时
  12. Leetcode143. 重排链表 (golang描述)
  13. serve注解是加在哪个类_PHP 8新特性之Attributes(注解)
  14. 神经网络常用激活函数总结
  15. MFC SetTimer函数的用法
  16. Java简单聊天室Socket服务器客户程序
  17. 盖茨、马斯克都遵循的学习法则:知识不由学科划分
  18. 安装CHD走过的一些坑
  19. 中医针灸学综合练习题库【12】
  20. python动态监控日志内容

热门文章

  1. oracle 删除jobs日志,修改Oracle的Job Scheduler 日志级别及删除运行日志
  2. 目标检测(二十二)--R-FCN
  3. 基础接口 java_java基础中的 接口方法的问题
  4. idea报错Cannot resolve jdk.tools:jdk.tools:1.7
  5. 远程连接hive报错
  6. Confluence 6 教程:在 Confluence 中导航
  7. postMessage可太有用了
  8. 自动化测试基础篇--Selenium中数据参数化之TXT
  9. struts一个action处理多个方法
  10. 解决 react-router 中 history is 'undefined' 的问题