react-router-dom V6 使用

文章介绍了如何在React应用中使用pnpm安装和配置react-router-dom,包括外层包裹和嵌套路由的实现,以及如何通过`useRoutes`和`useNavigate`进行导航和参数管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装路由pnpm add react-router-dom

在这里插入图片描述

2、外层包裹

import { HashRouter,useRoutes } from "react-router-dom";
import routes from "@/router";

const element = useRoutes(routes);
  <HashRouter>
    {element}
  </HashRouter>

3、嵌套路由

import Home from "@/pages/Home";
import List from "@/pages/List";
import GoodsList from "@/pages/GoodsList";
import Index1 from "@/pages/index1";
import Index2 from "@/pages/index2";
import Index3 from "@/pages/index3";

const routes = [
  {
    path: "/",
    element: <Home />,
    children: [
      {
        path: "goodsList",
        element: <GoodsList />,
      },
      {
        path: "goodsList2",
        element: <>goodsList2</>,
      },
    ],
  },
  {
    path: "/index1",
    element: <Index1 />,
  },
  {
    path: "/index2",
    element: <Index2 />,
  },
  {
    path: "/index3",
    element: <Index3 />,
  },
];

export default routes;


## 子路由使用Outlet占位,navigate进行跳转,useSearchParams获取参数数据

import React from 'react'
import {
  Routes,
  Route,
  Link,
  useRoutes,
  Outlet,
  useNavigate,
  useSearchParams
} from 'react-router-dom' 
import GoodsList from '@/pages/GoodsList'
import routes from '@/router'
import styles from './index.module.scss'

export default function home() {
  const element = useRoutes(routes)
  let navigate = useNavigate()
  const [searchParams, setSearchParams] = useSearchParams()
    useEffect(() => {
    //使用 Array.from(searchParams.entries()) 将迭代器对象转换为数组,以便查看 URLSearchParams 中的参数和值
    const entriesArray = Array.from(searchParams.entries())
    console.log(entriesArray)
    /* 
    [
      [
          "id",
          "zzk"
      ],
      [
          "age",
          "25"
      ]
    ]
    */
    // Iterate through keys
    for (const key of searchParams.keys()) {
      console.log(key)
    }
  }, [])
  return (
    <div className={styles.homeBox}>
      <div className={styles.leftBox}>
        <Link to='/goodsList?id=zzk&age=25'>children中测试跳转1</Link>
        <button
          onClick={() =>
            navigate('/goodsList2', {
              search: '?id=1111&age=99'
            })
          }
        >
          替换到 home 页面
        </button>
        <Link to='/index3'>跳转到index3</Link>
      </div>
      <div>
        {/* 子路由将会显示在这里,用outlet占位 */}
        <Outlet />
      </div>
    </div>
  )
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值