当前位置: 首页 > article >正文

react-router-dom 快速上手

一、概念

路由和组件的对应关系,使页面在同一个 html 快速切换。

二、快速开始

createBrowserRouter 创建路由实例

RouterProvider 组件渲染

// route.tsx

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

import Home from "./views/Home"

import Login from "./views/Login"



const router = createBrowserRouter({

  path: "/",

  element: <Home />,

},

{

  path: '/login',

  element: <Login />

});



export default router;
// main.tsx

import React from "react";

import ReactDOM from "react-dom/client";

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

import router from "./router";



ReactDom.createRoot(document.getElementById("root")).render(

  <React.StrictMode>

    <RouterProvider router={router} />

  </React.StrictMode>

);

三、路由模式

history 模式:createBrowserRouter

hash 模式:createHashRouter

四、路由跳转

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



const navigate = useNavigate();



navigate("/home", { replace: true });

五、路由传参

1. searchParams 方式

// 设置

navigate("/home?id=1");



// 获取

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

const [params] = useSearchParams();

params.get("id");
// 多个参数

navigate("/home?id=1&name=yq");

2. params 方式

// 设置

router = {

  path: "/home/:id",

};

navigate("/home/1");



// 获取

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

const { id } = useParams();

六、嵌套路由

const router = createBrowserRouter([

  {

    path: "/",

    element: <Layout></Layout>,

    children: [

      {

        path: "/user",

        element: <User></User>,

      },

    ],

  },

]);
export default (

  <div>

    <Outlet></Outlet>

  </div>

);

七、默认二级路由

createBrowserRouter([

  {

    path: "/",

    element: <Layout></Layout>,

    children: [

      {

        index: true,

        element: <User></User>,

      },

    ],

  },

]);

八、404 路由

createBrowserRouter([

  {

    path: "*",

    elemetn: <NotFound></NotFound>,

  },

]);


http://www.kler.cn/a/421588.html

相关文章:

  • AI论文速读 | TimeXer:让 Transformer能够利用外部变量进行时间序列预测
  • JAVA设计模式,动态代理模式
  • 我们来学mysql -- 事务并发之脏写(原理篇)
  • Java中的“抽象类“详解
  • 1.1 STM32_GPIO_基本知识
  • 设计模式(单例模式)
  • 最小有向包围盒——2D平面
  • 【机器学习】CatBoost 模型实践:回归与分类的全流程解析
  • commitlint——Git提交规范
  • HTMLCSS 创意工坊:卡片网格的鼠标魔法秀
  • dns实验3:主从同步-完全区域传输
  • 蓝桥杯准备训练(lesson1,c++方向)
  • WebGL vendor [显卡]指纹
  • getchar()
  • L16.【LeetCode笔记】前序遍历
  • tp6 合成两个pdf文件(附加pdf或者替换pdf)
  • 力扣hot100道【贪心算法后续解题方法心得】(三)
  • idea的version control
  • SpringBoot 监听Redis键过期事件 过期监听
  • 在macOS上从源码部署RAGFlow-0.14.1
  • centos新建磁盘
  • 网络安全 社会工程学 敏感信息搜集 密码心理学攻击 密码字典生成
  • 40分钟学 Go 语言高并发:内存管理与内存泄漏分析
  • 前端 vue3 + element-plus + ts 组件通讯,defineEmits,子传父示例
  • Neo4j APOC-01-图数据库 apoc 插件介绍
  • 使用OpenCV和卡尔曼滤波器进行实时活体检测