react-router

69 阅读2分钟

[Router](React Router | React入门到实战 (gitee.io))

前端路由的本质?

  • 后端-不同的资源路径标识符-服务端资源
  • 前端-不同的path - 不同的component
  • 本质就是路径和组件的一一对应关系 访问路径时渲染出来对应的组件
  1. 引入createBrowerRouter方法和RouterProvider组件。
  2. 使用createBrowerRouter配置路由path和组件的对应关系生成router实例。
  3. 渲染RouterProvider组件并传入router实例。

createBrowerRoute - 创建路由实例 在方法中定义路由path和组件的对应关系。 RouterProvider - 作为一个组件渲染,并且传入createBrowerRouter执行之后的生成的router实例。

//1.引入一个方法和一个组件
import {createBrowerRouter,RouterProvider} from 'react-router-dom'
//2.调用create方法生成实例
const router=createBrowerRouter([
    {
        path:'/',
        element:<Home />,
    },
    {
        path:'/login',
        element:<Login />, 
    },
])
//3.渲染组件
ReactDOm.createRoot(document.getElementById('root')).render(
    <React.StrictMode>
        <RouterProvider router={router} />
    </React.StrictMode>
)

两种路由模式

前端路由由于实现方式的不同,常用的分成history和hash路由,分别由createBrowerRouter和createHashRouter创建。

1. 路由模式      url表现       底层原理              是否需要后端支持
2. history     url/login   history+pushState    需要
3. hash       url/#/login  监听hashchange事件   不需要

编程式导航

通过js编程的方式进行路由页面跳转,比如从首页跳转到关于页

实现步骤;
1.导入一个useNavigate钩子函数
2.执行useNavigate函数的到跳转函数
3.在事件中执行跳转函数完成路由跳转

navigate('/about',{replace:true}),第一个参数是路由,第二个参数是用来确定跳转的路由是否替换之前的路由,不生成历史记录。

路由传参

//路由穿惨方式1:seacchParams传参->查询字符串传参的方式比较简单,参数的形式以问号拼接的到地址后面
navigate('/about?id=1001')
//在跳转的页面中如何获取传递的参数呢?
//1.先导入useSearchParams函数
import { useSearchParams } from 'react-router-dom'
//2.执行一下函数,通过解构赋值获取params
const [params]=useSearchParams()
//3.获取参数
const id=params.get('id)
//通过以上步骤就可以获取传过来的id参数
//路由传参方式2:params
navigate('/about/1001')
//得去路由配置位置找到你要跳转的about路由下面给他写一个参数占位
const router=createBrowerRouter([
    {
        path:'/',
        element:<Home />,
    },
    {
        path:'/login',
        element:<Login />, 
    },
    {
        path:'/about/:id',
        element:<About />, 
    },
])
//获取通过params传过来的参数需要导入useParams函数
import { useSearchParams,useParams } from 'react-router-dom'
const params=useParams(),//得到的params是一个对象,其中有一个属性id,直接通过params.id就可以获取到id了,而searchParams是得到一个对象,其中有get方法,在通过get方法获取id。