React + 项目(从基础到实战) -- 第五期

news/2024/7/15 17:14:44 标签: react.js, 前端, 前端框架

多页面需要路由来管理
路由:类似网址
在开始之前 | React Router6 中文文档 (baimingxuan.github.io)

路由设计

页面对应的路由

  • 首页 /

  • 登录 /login

  • 注册 /regitser

  • 问卷管理

    • 我的问卷 /manage/list

    • 星标问卷 /manage/star

    • 回收站 /manage/trash

  • 问卷详情

    • 编辑问卷 /question/edit/:id (动态路由)

    • 问卷统计 /question/stat/:id

  • 404

实操

建页面组件

</ outlet> 类似vue< /slot>用于切换不同的路由

在这里插入图片描述

配置路由

  • 新建 router文件夹下 index.tsx组件(注意是tsx)
  • 配置路由出口
const router = createBrowserRouter([

    {

        path:'/',

        element: <MainLayout />,

        children:[

            {

                path:'/',

                element: <Home/>

            },

            {

                path:'login',

                element: <Login />

            },

            {

                path:'register',

                element: <Register />

            },

            {

                path:'manage',

                element: <ManageLayout />,

                children:[

                    {

                        path:'list',

                        element: <List />

                    },

                    {

                        path:'star',

                        element: <Star />

                    },

                    {

                        path:'trash',

                        element: <Trash />

                    },

                ]

            }

        ]

    },

  

    {

        path:'/question',

        element: <QuestionLayout />,

        children:[

            {

                path:'edi/:id', //动态参数

                element: <Edit />

  

            },

            {

                path:'stat/:id',

                element: <Stat />

  

            },

        ]

    },

  

  
  
  
  
  

    {

        path:"*", //404 路由配置,写在最后兜底

        element: <NotFound />

    }

  

])
import { RouterProvider } from "react-router-dom"

import routerConfig from "./router"

  
  
  

function App() {

  

  return <RouterProvider router={routerConfig}></RouterProvider>

}

  

export default App

传递动态参数的写法

实现跳转

路由跳转

import React,{FC} from 'react'

  

import { useNavigate , Link } from 'react-router-dom';

  

const Home : FC = ()=>{

    const nav=useNavigate();

  

    const toLogin = () => {

        //1.一般跳转

        // nav('/login')

        //2.携带参数跳转   http://localhost:5173/login?a=100

        nav({

            pathname:'/login',

            search:'a=100',

        })

    }

    return (

        <>

        <h1>home</h1>

        <div>

            {/* 1. 通过第三方hook跳转 */}

            <button onClick={toLogin}>登录</button>

            <br />

  

            {/* 2. 通过Link组件跳转 */}

            {/* 2.1 一般跳转 */}

            {/* <Link to="/register">注册</Link> */}

            {/* 2.2 携带参数跳转 */}

            <Link to="/register?a=100">注册</Link>

  

        </div>

        </>

    )

}

  
  

export default Home;

获取动态参数

http://localhost:5173/question/edit/20

import React,{FC} from 'react'

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

  

const Edit : FC = ()=>{

    //获取携带的参数

    const {id = ''} = useParams();

    return (

        <>

        <h1>edit  {id}</h1>

      
        </>

    )

}

  
  

export default Edit;

获取url参数

http://localhost:5173/manage/list?keyword=13

 // 获取url参数

    const [searchParams] = useSearchParams()

    console.log('keyword',searchParams.get("keyword"));

http://www.niftyadmin.cn/n/5476390.html

相关文章

一文弄懂FFN/RNN/CNN参数量计算

1. 引言 为什么我们需要了解计算深度学习模型中的参数数量&#xff1f;我们一般情况下是不需要这么做的。但是&#xff0c;如果我们需要减小模型的大小&#xff0c;甚至缩短模型推理所需的时间&#xff0c;那么了解模型量化前后的参数数量就会派上用场。 计算深度学习模型中的…

MySQL8.3.0 master/slave 主从复制方案

一 、什么是MySQL主从 MySQL主从&#xff08;Master-Slave&#xff09;复制是一种数据复制机制&#xff0c;用于将一个MySQL数据库服务器&#xff08;主服务器&#xff09;的数据复制到其他一个或多个MySQL数据库服务器&#xff08;从服务器&#xff09;。这种复制机制可以提供…

橘子学JDK之JMH-02(BenchmarkModes)

一、案例二代码 这次我们来搞一下官网文档的第二个案例&#xff0c;我删除了一些没用的注释&#xff0c;然后对代码做了一下注释的翻译&#xff0c;可以看一下意思。 package com.levi;import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; import …

代码随想录算法训练营第三十四天|1005.K次取反后最大化的数组和、134.加油站、135.分发糖果

代码随想录算法训练营第三十四天|1005.K次取反后最大化的数组和、134.加油站、135.分发糖果 1005.K次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过…

动捕算法记录

TDPT_ThreeDPoseTracker 没有开源源代码&#xff0c;开源了推理应用程序 https://digital-standard.booth.pm/items/5294636 Meshcapade Me 每次上传视频时长10秒以内。

一位面试了20+家公司的测试工程师,发现了面试“绝杀四重技”!

年少不懂面试经&#xff0c;读懂已是测试人。 大家好&#xff0c;我叫小胖&#xff0c;一名历经沧桑&#xff0c;看透互联网行业百态的测试从业者&#xff0c;经过数年的勤学苦练&#xff0c;精钻深研究&#xff0c;终于从初出茅庐的职场新手成长为现在的测试老鸟&#xff0c;…

代码随想录刷题day48| 打家劫舍打家劫舍(环形)打家劫舍(树形)

文章目录 day48学习内容一、打家劫舍-相邻的不能偷1.1、动态规划五部曲1.1.1、 确定dp数组&#xff08;dp table&#xff09;以及下标的含义1.1.2、确定递推公式1.1.3、 dp数组如何初始化1.1.4、确定遍历顺序 1.2、代码1.2.1、转态转移方程是怎么推导出来的1.2.2、这题和动态规…

ansible-tower安装

特别注意&#xff1a;不需要提前安装ansible&#xff0c;因为ansible tower中的setup.sh脚本会下载对应的ansible版本 ansible tower不支持Ubuntu系统,对cenos系统版本也有一定的限制&#xff0c;建议使用centos7.9。 准备一台全新的机器安装&#xff0c;因为ansible tower需要…