首页 > 其他分享 >Umi配置路由

Umi配置路由

时间:2023-05-10 14:12:35浏览次数:54  
标签:function index users 配置 组件 Umi id 路由

一、Umi路由的概念

在 Umi 中,你可以在 .umirc.ts 文件中使用 routes 属性来配置路由。routes 属性是一个数组,每个元素都表示一个路由对象。每个路由对象都包含以下属性:

  • path:表示路由路径,可以是字符串或正则表达式。

  • component:表示路由组件的路径,可以是字符串或函数。

  • routes:表示当前路由的子路由,也是一个路由数组。

二、定义路由表

 .umirc.ts 文件内容如下:

import { defineConfig } from "umi";

export default defineConfig({
  routes: [
    { 
      path: "/",
      component: "Home/index" 
    },
    { 
      path: "/Home2",
      component: "@/pages/Home2/index",
      // 嵌套路由
      routes: [
        {
          path: "/Home2/one",
          component: "@/pages/Home2/one/index"
        },
        {
          path: "/Home2/two",
          component: "@/pages/Home2/two/index"
        },
      ]
    },
  ],
  npmClient: 'npm',
});

三、在页面上引用

在 Umi 中,你可以使用以下方式在页面中引用路由组件:

  1. 使用 Link 组件来创建链接。

Link 组件可以用于创建内部链接,layouts / index.tsx 代码如下:

import { Link, Outlet } from 'umi';
import styles from './index.less';

export default function Layout() {
  return (
    <div className={styles.navs}>
      <ul>
        <li>
          <Link to="/">Home</Link>
        </li>
        <li>
          <Link to="/Home2">Home2</Link>
        </li>
      </ul>
      <Outlet />
    </div>
  );
}

嵌套路由的用法也差不多,Home2 /  index.tsx 代码如下:

import { Link, Outlet } from "umi";

export default function HomePage() {
  return (
    <div className="homebox">
      <div>
        <Link to="/Home2/one">one</Link>
        <Link to="/Home2/two">two</Link>
      </div>
      <div>
        <Outlet />
      </div>
    </div>
  );
}
  1. 使用 history 对象来进行编程式导航。

history 对象可以用于在代码中进行导航,例如:

import { history } from 'umi';

function MyComponent() {
  function handleClick() {
    history.push('/users');
  }

  return (
    <div>
      <button onClick={handleClick}>Go to Users</button>
    </div>
  );
}
  1. 在页面中使用 Route 组件来渲染路由组件。

Route 组件可以用于在页面中渲染路由组件,例如:

import { Route } from 'umi';

function MyComponent() {
  return (
    <div>
      <Route path="/users" component={Users} />
    </div>
  );
}

function Users() {
  return <div>Users Page</div>;
}

需要注意的是,在使用 Route 组件时,需要将路由组件作为 component 属性的值传递给 Route 组件。此外,还需要在路由组件中添加 export default 来导出组件。

四、带参数的路由

4.1、路由表如下配置:

export default {
  routes: [
    {
      path: '/',
      component: '@/pages/index',
    },
    {
      path: '/users',
      component: '@/pages/users/index',
      routes: [
        {
          path: '/users/:id',
          component: '@/pages/users/[id]',
        },
      ],
    },
  ],
};

在上述代码中,我们定义了两个路由,一个是根路由 '/',另一个是 /users 路由。在 /users 路由下,我们定义了一个子路由 /users/:id,其中 :id 表示动态路由参数。

4.2、在页面上引用:

对于路由组件的引入,我们可以使用相对路径或绝对路径,例如:

  • 相对路径:'./users/index',表示在当前目录下的 users/index.js 文件中定义路由组件。
  • 绝对路径:'@/pages/users/index',表示在项目根目录下的 src/pages/users/index.js 文件中定义路由组件。

使用动态路由参数时,需要将路由组件使用方括号包裹起来,例如:

  • '/users/:id':表示动态路由参数为 id
  • '@/pages/users/[id]':表示路由组件为 src/pages/users/[id].js

4.2.1、方法一:在 Link 组件中使用动态路由参数。

例如,你可以在页面中使用 Link 组件来创建一个带参数的链接:

import { Link } from 'umi';

function MyComponent() {
  const userId = 123;

  return (
    <div>
      <Link to={`/users/${userId}`}>User Profile</Link>
    </div>
  );
}

在上述代码中,我们将动态路由参数 userId 插入到链接中,以创建一个带参数的链接。

4.2.2、方法二:使用 history 对象来进行编程式导航。

例如,你可以在页面中使用 history.push 方法来进行编程式导航:

import { history } from 'umi';

function MyComponent() {
  const userId = 123;

  function handleClick() {
    history.push(`/users/${userId}`);
  }

  return (
    <div>
      <button onClick={handleClick}>User Profile</button>
    </div>
  );
}

在上述代码中,我们使用 history.push 方法来进行编程式导航,并将动态路由参数 userId 插入到路径中。

4.2.3、方法三:在页面中使用 Route 组件来渲染路由组件。

例如,你可以在页面中使用 Route 组件来渲染带参数的路由组件:

import { Route } from 'umi';

function MyComponent() {
  return (
    <div>
      <Route path="/users/:id" component={UserProfile} />
    </div>
  );
}

function UserProfile(props) {
  const userId = props.match.params.id;

  return <div>User Profile for {userId}</div>;
}

在上述代码中,我们使用 Route 组件来渲染带参数的路由组件,并在组件中通过 props.match.params.id 获取动态路由参数的值。

需要注意的是,在使用带参数的路由时,需要在路由配置中将动态路由参数使用冒号 : 来表示,例如 /users/:id。此外,在路由组件中获取动态路由参数的值时,可以使用 props.match.params 对象来获取参数的值。

 

标签:function,index,users,配置,组件,Umi,id,路由
From: https://www.cnblogs.com/fairya/p/17387754.html

相关文章

  • 1、华为路由器百兆或千兆口解决IP配置问题
    遇到的问题:通常情况下,华为路由器千兆口可以配置IP,无需划分VLAN都可以。但是,百兆口如果是不支持三层交换的话,就无法直接进行IP配置。此时,需要配置VLAN,将VLAN加入端口,并且pvid还得加上。 注意:交换机和路由器都类似。最后就是不同网段,应使用相关协议、配置路由等。......
  • 服务器配置——mysql安装
    1.安装MySQL打开终端获取root权限suroot下载安装mysql官方YumRepository[root@localhost~]#wget-i-chttp://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum安装 [root@localhost~]#yum-yinstallmysql57-community-release-el7-10.noarch.r......
  • ubuntu配置静态ip
    ubuntu如何设置静态IP地址?-山雨欲來風滿楼-博客园(cnblogs.com)ubuntu从 17.10 开始,已放弃在 /etc/network/interfaces 里固定IP的配置,interfaces 文件不复存在,即使配置也不会生效,而是改成 netplan 方式,配置写在 /etc/netplan/01-netcfg.yaml 或者类似名称......
  • 基于CentOS 7.6安装及配置APISIX 3.0环境
    最近一直在研究微服务相关内容,通过对比各大API网关,发现新起之秀APISIX无论从开源程度上来讲还是功能上,都拥有很大的优势。经历了几天折磨一样的学习,目前在本地环境中配置成功了一套,以供自己留存吧,实在是网上的很多文章要么太老了,要么就是乱写一通。 APISIX官方网址:https://ap......
  • git相关的代理配置
    1配置git代理(以http代理为例)gitconfig--globalhttp.proxyhttp://<username>:<password>@<proxy.server.com>:<8080>gitconfig--globalhttps.proxyhttp://<username>:<password>@<proxy.server.com>:<8080>2替换git协议为ht......
  • RHEL7部署http应用配置共享yum源
    通过采用部署http的方式实现共享yum源,供其它服务器实现rpm的快捷安装。该部署方式也适用于centos服务器。RHEL7服务器说明服务器信息说明192.168.10.110yum源服务主节点192.168.10.101从节点(从192.168.10.110上获取yum源)前提条件:1.两台服务器需关闭防火墙iptables-Fsystem......
  • JMeter安装配置
    一、下载并配置JDK(每个学JAVA的应该都会,不过多赘述)注:需JDK8以上版本二、下载安装JMeter1、官网连接:ApacheJMeter-DownloadApacheJMeter2、选择所需版本进行下载3、将下载成功的压缩包解压到指定目录当中,即安装成功。4、配置环境变量变量名输入:JMETER_HOME变量值输入:JM......
  • GAMES101 VS2019 2022环境配置
    GAMES101VS20192022环境配置Eigen库的配置在官网https://eigen.tuxfamily.org/index.php?title=Main_Page中下载Eigen库的zip格式。将压缩包解压为eigen3同时解压到指定路径,我这里为D:\include\eigen3。使用VS2019创建一个空项目,将代码框架的头文件和源文件加入到项......
  • firewalld规则配置
    firewalld规则配置一、概念动态防火墙启动新规则时,不会像iptables一样,先清空规则,再启动所有规则,如此会对现在程序有影响,哪怕只是一条规则。而firewalld规则变更不需要对整个防火墙规则重载,可直接添加新规则iptables与firewalld的关系firewalld底层使用iptables作为防......
  • 关于arcgis和postgresql数据库创建企业级地理数据库的配置文件
    第一:需要将arcgis的C:\ProgramFiles(x86)\GeoScene\Desktop\Desktop10.8\DatabaseSupport\PostgreSQL\12\Windows64这个路径下的文件拷贝到postgresql数据库的安装目录的lib文件夹中;第二:需要将五个文件libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll和ssleay32.d......