首页 > 其他分享 >前端react入门day06-ReactRouter

前端react入门day06-ReactRouter

时间:2024-07-07 22:30:23浏览次数:19  
标签:const ReactRouter day06 react import router path 路由

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

什么是前端路由

创建路由开发环境

快速开始

抽象路由模块

路由导航

什么是路由导航

声明式导航

编程式导航

导航传参

嵌套路由配置

什么是嵌套路由

嵌套路由配置

默认二级路由

404路由配置

俩种路由模式


什么是前端路由

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

创建路由开发环境

使用路由我们还是采用CRA创建项目的方式进行基础环境配置 1. 创建项目并安装所有依赖 npx create-react-app react-router-pro npm i 2. 安装最新的 ReactRouter包 npm i react-router-dom 3. 启动项目 npm run start

快速开始

需求:创建一个可以切换登录页和文章页的路由系统

抽象路由模块

实际开发中的router配置

article:

import { useParams, useSearchParams } from "react-router-dom"

const Article = () => {
  // const [params] = useSearchParams()
  // const id = params.get('id')
  // const name = params.get('name')

  const params = useParams()
  const id = params.id
  const name = params.name
  return <div>我是文章页{id}-{name}</div>
}

export default Article

login:

import { Link, useNavigate } from 'react-router-dom'
const Login = () => {
  const navigate = useNavigate()
  return (
    <div>
      我是登录页
     
    </div>
  )
}

export default Login

router:

import Login from '../page/Login'
import Article from '../page/Article'
import { createBrowserRouter, createHashRouter } from 'react-router-dom'
const router = createBrowserRouter([
  {
    path: '/login',
    element: <Login />
  },
  {
    path: '/article/:id/:name',
    element: <Article />
  }
])

export default router

index:

import React from 'react'
import ReactDOM from 'react-dom/client'
import './index.css'
import reportWebVitals from './reportWebVitals'
import { RouterProvider } from 'react-router-dom'

// 1. 导入路由router
import router from './router'

const root = ReactDOM.createRoot(document.getElementById('root'))
root.render(
  <React.StrictMode>
    {/* 2. 路由绑定 */}
    <RouterProvider router={router}></RouterProvider>
  </React.StrictMode>
)

路由导航

什么是路由导航

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

声明式导航

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

语法说明:通过给组件的 to属性指定要跳转到路由path ,组件会被渲染为浏览器支持的a链接,如果需要传参直接 通过字符串拼接 的方式拼接参数即可 
import { Link, useNavigate } from 'react-router-dom'
const Login = () => {
  const navigate = useNavigate()
  return (
    <div>
      我是登录页
      {/* 声明式的写法 */}
      <Link to="/article">跳转到文章页</Link>
   
    </div>
  )
}

export default Login

编程式导航

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

导航传参

嵌套路由配置

什么是嵌套路由

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

嵌套路由配置

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

默认二级路由

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

404路由配置

场景:当浏览器输入url的路径在整个路由配置中都找不到对应的 path,为了用户体验,可以使用 404 兜底组件进行渲染 实现步骤: 1. 准备一个NotFound组件 2. 在路由表数组的末尾,以*号作为路由path配置路由

俩种路由模式

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

标签:const,ReactRouter,day06,react,import,router,path,路由
From: https://blog.csdn.net/weixin_73295475/article/details/140245845

相关文章

  • 空有一身技术却无处施展??找用Python和React写产品的开发同学
    空有一身技术却无处施展??如果您空有一身技术却无处施展,那么机会来了,现在找技术同学一起利用空闲时间和周末时间创造属于自己的产品。目前有两个产品,之前找的外包现在不做了,开发处于停滞状态,因此现在想要找对产品开发真正感兴趣有热情的同学一起做。计划先将这两个产品bug修完,然......
  • react
    也是好久没有更新了,今天更新一下关于react的一些基本操作 什么是reactReact是用于构建用户界面的JavaScript库, [1]起源于Facebook的内部项目,该公司对市场上所有JavaScript MVC框架都不满意,决定自行开发一套,用于架设Instagram的网站。于2013年5月开源产生背景React的......
  • wx.config的前后端实现express和react
    wx.config是微信JS-SDK的配置接口,用于初始化微信JS-SDK。为了确保安全性,微信要求每次调用JS-SDK时都需要进行签名认证。签名认证需要使用jsapi_ticket,而jsapi_ticket需要通过access_token获取。以下是实现wx.config的步骤:后端部分获取AccessToken你需要定期获取并缓存acce......
  • react 2024 07 04
    import{createApi,fetchBaseQuery}from'@reduxjs/toolkit/query/react';import{RootState}from'../store';//定义用户数据的接口interfaceUser{id:number;name:string;sex:string;address?:string;//可选字段job?:string;//可选字段......
  • React组件性能优化中如何避免频繁更新?
    在React应用中,组件的频繁更新可能会导致性能问题,因为每次更新都涉及到重新渲染和布局计算。为了提升性能,避免不必要的更新是非常关键的。以下是一些优化React组件性能,避免频繁更新的策略:使用PureComponent或React.memoPureComponent和React.memo都会在组件接收新属性或状......
  • Spring Reactor基本介绍和案例
    1.Reactor对比1.1Reactor线程模型Reactor线程模型就是通过单个线程使用JavaNIO包中的Selector的select()方法,进行监听。当获取到事件(如accept、read等)后,就会分配(dispatch)事件进行相应的事件处理(handle)。如果要给Reactor线程模型下一个更明确的定义,应该是:Re......
  • Finding the React Rockstar: A Guide to Hiring Top React Developers
    ReactJScontinuestodominatethefront-enddevelopmentscene.Itsefficientcomponent-basedstructureandflexibilitymakeitafavoriteforbuildingdynamicsingle-pageapplications(SPAs).Butwithgreatpowercomesgreatresponsibility...tofindthep......
  • [email protected](45)路由v5.x(10)源码(2)- history
    目录1,作用1.1,createBrowserHistory1.2,createHashHistory1.3,createMemoryHistory2,history对象的属性2.1,action2.2,push/replace/go/goBack/goForward2.3,location2.4,listen2.5,block/getUserConfirmation2.5,createHref1,作用react-router在控制和监听地址变......
  • Reactive Streams介绍及应用分析
    ReactiveStreams的介绍与应用分析如下:一、ReactiveStreams基本知识ReactiveStreams是一种基于异步流处理的标准化规范,旨在使流处理更加可靠、高效和响应式。其核心思想是让发布者(Publisher)和订阅者(Subscriber)之间进行异步流处理,以实现非阻塞的响应式应用程序。基本特性......
  • 在React项目中使用iframe嵌入一个网站
    在React项目中使用iframe嵌入一个网站非常简单。以下是如何在页面中嵌入百度网站的步骤:1.创建一个新的组件用于嵌入iframe首先,在src/components文件夹中创建一个新的文件Baidu.js。在Baidu.js文件中,编写如下代码://src/components/Baidu.jsimportReactfrom'react'......