美文网首页
09react18-ReactRouter

09react18-ReactRouter

作者: 东邪_黄药师 | 来源:发表于2024-03-17 15:25 被阅读0次

    什么是前端路由

    一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候,path 对应的组件会在页面中进行渲染


    创建路由开发环境

    安装最新的ReactRouter包
    npm i react-router-dom

    快速开始demo

    image.png
    import React from 'react'
    import ReactDOM from 'react-dom/client'
    
    const router = createBrowserRouter([
      {
        path:'/login',
        element: <div>登录</div>
      },
      {
        path:'/article',
        element: <div>文章</div>
      }
    ])
    
    ReactDOM.createRoot(document.getElementById('root')).render(
      <RouterProvider router={router}/>
    )
    

    路由导航

    1. 什么是路由导航

    路由系统中的多个路由之间需要进行路由跳转,并且在跳转的同时有可能需要传递参数进行通信

    2. 声明式导航

    声明式导航是指通过在模版中通过 <Link/> 组件描述出要跳转到哪里去,比如后台管理系统的左侧菜单通常使用这种方式进行

    3. 编程式导航

    编程式导航是指通过 useNavigate 钩子得到导航方法,然后通过调用方法以命令式的形式进行路由跳转,比如想在登录请求完毕之后跳转就可以选择这种方式,更加灵活


    语法说明:通过调用navigate方法传入地址path实现跳转

    导航传参

    useSearchParams
    import {  useSearchParams } from "react-router-dom"
    const Article = () => {
      // useSearchParams
      const [params] = useSearchParams()
      const id = params.get('id')
      const name = params.get('name')
      return <div>我是文章页{id}-{name}</div>
    }
    // useParams
    export default Article
    
    useParams
    import { useParams} from "react-router-dom"
    const Article = () => {
    // useParams
      const params = useParams()
      const id = params.id
      const name = params.name
      return <div>我是文章页{id}-{name}</div>
    }
    export default Article
    

    嵌套路由配置

    1. 什么是嵌套路由

    在一级路由中又内嵌了其他路由,这种关系就叫做嵌套路由,嵌套至一级路由内的路由又称作二级路由,例如:


    2. 嵌套路由配置

    实现步骤
    1. 使用 children属性配置路由嵌套关系
    2. 使用 <Outlet/> 组件配置二级路由渲染位置

    3. 默认二级路由

    当访问的是一级路由时,默认的二级路由组件可以得到渲染,只需要在二级路由的位置去掉path,设置index属性为true

     {
            path:'/',
            element:<Layout />,
            children: [
                // 设置为默认二级路由 一级路由访问的时候,它也能得到渲染
          {
            index: true,
            element: <Board />
          },
          {
            path: 'about',
            element: <About />
          }
            ]
        },
    
    4. 404路由配置

    场景:当浏览器输入url的路径在整个路由配置中都找不到对应的 path,为了用户体验,可以使用 404 兜底组件进行渲染

    实现步骤:

    1. 准备一个NotFound组件
    2. 在路由表数组的末尾,以*号作为路由path配置路由
     {       path: '*',
            element: <NotFound />
     }
    
    5. 俩种路由模式

    各个主流框架的路由常用的路由模式有俩种,history模式和hash模式, ReactRouter分别由 createBrowerRouter 和 createHashRouter 函数负责创建

    路由模式 url表现 底层原理 是否需要后端支持
    history url/login history对象 + pushState事件 需要
    hash url/#/login 监听hashChange事件 不需要

    相关文章

      网友评论

          本文标题:09react18-ReactRouter

          本文链接:https://www.haomeiwen.com/subject/fcnozdtx.html