react入门8:认识React Router

153 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第40天,点击查看活动详情


写在前面

本篇是react学习的第八篇,认识React Router

认识React Router

React Router 提供客户端路由的功能。

在传统的网站中,浏览器从web服务器请求文档,下载css和js文件,并将从服务器发送的HTML呈现到浏览器页面上。当用户点击另一个链接时,浏览器会重新请求新页面。

而客户端路由通过点击链接时更新URL,不需要从服务器再次请求另一个文档。浏览器页面可以立即呈现一些新的UI,增强了用户体验,并可以使用ajax、axios、fetch等向服务器发出数据请求,达到在页面上展示最新数据的目的。

一些会用到的api介绍

createBrowserRouter

createBrowserRouter用来创建一个路由,用法如下:

import { createBrowserRouter } from "react-router-dom";

const router = createBrowserRouter(routes);

routescreateBrowserRouter的参数,是一个含有children字段的可以嵌套的对象数组,例如:

[
  {
    path: "/",
    element: <Root />,
    loader: rootLoader,
    children: [
      {
        path: "team",
        element: <Team />,
        loader: teamLoader,
      },
    ],
  },
]

其中path表示路径;element表示要展示的内容(组件);loader为加载器,在路由跳转之前调用,并通过useLoaderData为要展示的组件提供数据;此外还有errorElement表示错误页面;index表示索引;caseSensitive表示路由是否匹配大小写;action表单组件获取数据(<Form>),此外还有handle,后续接触到了再详细介绍

RouterProvider

用来展示createBrowserRouter创建的路由router的内容的组件

Outlet

父路由组件元素中使用<Outlet>来渲染其子路由组件

Link

<Link>是一个html元素,用户可以通过单击它进行路由导航,跳转到另一个路由,他会自动转换为a标签,不带active样式。用法如下:

<Link to={路由path}>路由名称</Link>

NavLink

<Link>作用一样,但他在选择了菜单后会给选择菜单添加一个active类名,我们可以对选中的代码给不同的样式

useLoaderData

获取loader加载器向服务器请求的数据

Form

Form是一个组件,包含一个普通HTML表单,他有以下字段:

action:有两个字段。
1. params,动态路由的动态部分,例如:
path: "contacts/:contactId", // 这段传的params的值就是{contactId: 'contactId'}
2. request,这是一个发送到路由的Request实例。最常见是从中解析FormData,后续会有例子用到

methods:支持“get”、“post”、“put”、“patch”和“delete”。默认值为“get”。

redirect

可以重定向到另一个路由

useNavigation

useNavigation返回当前导航状态:可以是空闲、提交、加载之一

useNavigation().state === "loading" // 加载
useNavigation().state === "idle" // 空闲
useNavigation().state === "submitting" // 提交

写在最后

接下来在下一篇文章我们跟着React Router官方文档教程尝试使用React Router

以上就是认识React Router所有代码和说明