• React-Router路由


    1.React Router的基本使用

    安装:安装时,选择react-router-dom,react-router会包含一些react-native的内容,web开发并不需要;

    npm install react-router-dom

    路径模式
    • BrowserRouter使用history模式;
    • HashRouter 使用hash模式;
    路由映射配置
    Routes:包裹所有的Route,在其中匹配一个路由;
    Route:Route用于路径的匹配;
    • path属性:用于设置匹配到的路径;
    • element 属性:设置匹配到路径后,渲染的组件;
    路由配置和跳转
    Link和NavLink:
    • 通常路径的跳转是使用Link组件,最终会被渲染成a元素;
    • NavLink是在Link基础之上增加了一些样式属性;
    • to属性:Link中最重要的属性,用于设置跳转到的路径;
    Navigate导航
    Navigate 用于路由的重定向,当这个组件出现时,就会执行跳转到对应的to路径中;
    Navigate是由react-router-dom提供的组件, 可直接调用;
    路由参数传递
    • 动态路由的方式;
    • search传递参数;
    动态路由的概念指的是路由中的路径并不会固定:
    • 比如/detail的path对应一个组件Detail;
    • 将path在Route匹配时写成/detail/:id,那么 /detail/abc、/detail/123都可以匹配到该Route,并且进行显示,该匹配规则及称之为动态路由;
    动态路由参数获取通过 useParams函数获取,useParams由react-router-dom库提供的api;
    search参数获取:

    通过useSearchParams函数获取,useSearchParams由react-router-dom库提供的api,该函数返回一个entries对象,通过Object.fromEntries转换成普通对象即可;

    路由的配置文件
    目前我们所有的路由定义都是直接使用Route组件,并且添加属性来完成的,但是这样的方式会让路由变得非常混乱,早期的时候, Router 并且没有提供相关的 API ,我们需要借助于 react-router-config完成,在Router6.x中,react-router-dom库 提供了useRoutesAPI可以集中路由配置到一个文件中管理。

    router.js

    1. import { Navigate } from "react-router-dom"
    2. import Home from "../pages/Home"
    3. import HomeRecommend from "../pages/HomeRecommend"
    4. import HomeRanking from "../pages/HomeRanking"
    5. // import Category from "../pages/Category"
    6. // import About from "../pages/About"
    7. import React from "react"
    8. const Category = React.lazy(() => import('../pages/Category'))
    9. const About = React.lazy(() => import('../pages/About'))
    10. const Routes = [
    11. {
    12. path: '/',
    13. element: <Navigate to='/home' />
    14. },
    15. {
    16. path: '/home',
    17. element: <Home/>,
    18. children: [
    19. {
    20. path: '/home/recommend',
    21. element: <HomeRecommend />
    22. },
    23. {
    24. path: '/home/ranking',
    25. element: <HomeRanking />
    26. },
    27. {
    28. path: '/home/category',
    29. element: <Category />
    30. }
    31. ]
    32. },
    33. {
    34. path: '/about',
    35. element: <About />
    36. }
    37. ]
    38. export default Routes

    组件中使用

     如果我们对某些组件进行了异步加载(懒加载),那么需要使用Suspense进行包裹: 

  • 相关阅读:
    点云库PCL学习——点云的格式、PCD文件的打开和显示
    数据结构——KD树
    Vue3:组件高级(下)
    【java】【MyBatisPlus】【四】【完】MyBatisPlus一些实战总结(枚举、翻页、sql、组合条件、自增主键、逻辑删除)
    python
    基于ESP32-WROOM-32的USB转WIFI模块设计
    打开英雄联盟缺少d3dcompiler_43.dll有哪些处理方法
    Typecho主题 - 一款视频ZeVideo开源主题
    网络防御--防火墙
    Go json tag的大小写匹配问题
  • 原文地址:https://blog.csdn.net/weixin_47342624/article/details/133930443