Umi +React + dva + Ant Design Pro 的项目学习(四) Umi的路由实现

1.单页面

首先我们需要搞懂一个概念,就是Umi是一个单页面应用 , 就是一个html页面,他不会进行跳转,你所看到的页面变换,只不过是在同一个页面上重新渲染了别的组件。所以Umi的路由路径关联的其实是一个个组件文件。
 

2.创建一个路由

进入Umi的配置文件 .umirc.ts,我们在routes增加我们需要创建的路由对象,并且绑定它所关联的组件路径。
在这里插入图片描述
这里的 “@/page/hello” 中的 "@"表示 src 目录。
你也可以用 “hello” 来代替 “@/page/hello”"@/page/hello" 为绝对路径,“hello” 为相对路径,会从 src/pages 开始找起。

.umirc.ts

	routes: [
	    {path: '/', component: '@/pages/index'},
	    {path: '/hello', component: '@/pages/hello'},//绝对路径
	    {path: '/hello', component: 'hello'},//相对路径
  	],

 

3.填充页面组件

创建了路由和对应的页面组件,但是我们的hello.tsx还是空的,我们写一个简单的Hello World页面.
小提示:如果你是用IDEA的话,输入rsc或者rcc可以快速填充。(rsc为函数式组件,rcc为对象式组件,官推前者)
在这里插入图片描述
hello.tsx

import React from 'react';

const Hello = () => {
  return (
    <div>
      <h1>HelloWorld</h1>
    </div>
  );
};

export default Hello;

这时候我们就可以出入路由跳转到 “http://localhost:8000/hello” 页面进行查看。
在这里插入图片描述
恭喜,你已经成功学会如何配置一个路由了!
 

4.多重路由

然后我们简单弄个多重路由。
在路由中增加routes属性,里面是多个route嵌套而成的,有点套娃的感觉。

.umirc.ts

routes: [
    {path: '/', component: '@/pages/index'},
    {path: '/hello', component: '@/pages/hello'},
    {
      path: '/user',
      routes:[
        {path:'/user/add',component:'@/pages/user/add'},
        {path:'/user/edit',component:'@/pages/user/edit'}
      ]
    }
  ],

随便创建两个对象,这里路径是 “src/pages/user/…”,其中page中的内容就不放了,随便写点能辨识的内容就好。
在这里插入图片描述
效果图:
http://localhost:8000/user/add
在这里插入图片描述
http://localhost:8000/user/edit
在这里插入图片描述

5.页面模板

有时候我们的页面往往有一些公用的部分,例如sidebar,header,footer等类似的,这就需要我们进行页面的模板化。
首先我们在src目录下面创建一个layout存放页面模板。
在这里插入图片描述
在layouts目录下创建一个header.tsx对象,我们给之前的页面设计一个导航栏。(这里只是取名叫header,其实这是页面模板,一般一个layouts文件包含一个模板所有的排版其中的组件

这里的 {props.children} 就会把子路由下的组件全都引用到指定位置。

header.tsx

import React from 'react';

const Header = (props: any) => { // props:any是typescript的类型规范,如果你是jsx文件直接props就可以拿到
  return (
    <div>
      <h3>主页/用户/商品/个人中心</h3>
      {props.children}
    </div>
  );
};

export default Header;

然后我们在路由中把我们的模板加进去,也就是在 “/user/add”“/user/edit” 的外面一层套了一个统一的 “component”

.umirc.ts

  routes: [
    {path: '/', component: '@/pages/index'},
    {path: '/hello', component: '@/pages/hello'},
    {
      path: '/user',
      component:'@/layouts/header',
      routes:[
        {path:'/user/add',component:'@/pages/user/add'},
        {path:'/user/edit',component:'@/pages/user/edit'}
      ]
    }
  ],

效果图:
在这里插入图片描述
在这里插入图片描述
ok,下次我们来实现路由跳转。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值