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

react中路由跳转以及路由传参

一、路由跳转

1.安装插件

npm install react-router-dom

2.路由配置

路由配置:react中简单的配置路由-CSDN博客

3.实现代码

// src/page/index/index.js// 引入
import { Link, useNavigate } from "react-router-dom";function IndexPage() {const navigate = useNavigate()return (<div>欢迎来到index{/* 声明式是导航 */}<div><Link to="/login">跳转到login</Link></div>{/* 编程式导航 */}<div><button onClick={() => navigate('/login')}>跳转到login</button></div></div>);
}export default IndexPage;

4.效果

跳转前

跳转后

5.说明

声明式导航:会当做<a />使用,因此会出现a标签的样式,一般用于菜单这样不需要调用方法,直接点击就跳转这样的时候;

编程式导航:一般用于需要触发方法做一些逻辑操作后再跳转的场景

二、路由传参

说明:传参方式有两种,获取参数方式对应也是两种;这里两种传参方式同时编写,注释的是searchParams方式传参,没注释的是params方式传参

1.安装插件

npm install react-router-dom

2.路由配置

src/router/index.js

// 1.引入方法,用于创建路由实例
import { createBrowserRouter } from 'react-router-dom' // 2.引入组件
import LoginPage from '../page/login';
import IndexPage from '../page/index';// 3.创建router实例,配置路由
const router = createBrowserRouter([ {// path:"/login", // searchParams方式传参path:"/login/:id/:name", // params方式传参element:<LoginPage></LoginPage> // 渲染页面的地方},{path:"/index",element:<IndexPage></IndexPage>},{path:"",element:<div>欢迎来到首页</div>}
])// 4.暴露路由实例,用于在App.js主入口组件
export default router;

3.实现代码

src/page/index/index.js

// src/page/index/index.js// 引入
import { Link, useNavigate } from "react-router-dom";function IndexPage() {const navigate = useNavigate()return (<div>欢迎来到index{/* 声明式是导航 */}<div>{/* searchParams方式传参 */}{/* <Link to="/login?id=1&name=一之濑帆波">跳转到login</Link> */}{/* params方式传参 */}<Link to="/login/1/一之濑帆波">跳转到login</Link></div>{/* 编程式导航 */}<div>{/* searchParams方式传参 */}{/* <button onClick={() => navigate('/login?id=1&name=一之濑帆波')}>跳转到login</button> */}{/* params方式传参 */}<button onClick={() => navigate('/login/1/一之濑帆波')}>跳转到login</button></div></div>);
}export default IndexPage;

src/page/login/index.js

import { useSearchParams,useParams } from "react-router-dom";function LoginPage() {// searchParams方式传参// const [params] = useSearchParams();// const name = params.get('name'); // 通过get方法来获取数据// const id = params.get('id'); // // 通过get方法来获取数据// params方式传参const params = useParams();const name = params.name;const id = params.id;return (<div>{name} 欢迎来到login-{id}</div>);
}export default LoginPage;

src/App.js

import React, { useState, useRef, useEffect, useContext, createContext } from 'react';
// 1.引入
import { RouterProvider } from 'react-router-dom'
import router from './router';function App() {return (<div>{/* 2.绑定 */}<RouterProvider router={router}></RouterProvider></div>);
}export default App;

4.最终效果

http://www.lryc.cn/news/408271.html

相关文章:

  • C++ STL set_symmetric_difference
  • postman请求响应加解密
  • 数据集,批量更新分类数值OR批量删除分类行数据
  • 一款功能强大的视频编辑软件会声会影2023
  • 政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署LivePortrait :通过缝合和重定向控制实现高效的肖像动画制作
  • 在Spring项目中使用Maven和BCrypt来实现修改密码功能
  • RedHat8安装Oracle19C
  • React系列面试题
  • C#:通用方法总结—第6集
  • Spark实时(一):StructuredStreaming 介绍
  • LangChain4j-RAG基础
  • git--本地仓库修改同步到远程仓库
  • 剑和沙盒 3 - 深度使用和解析Windows Sandbox
  • 深度学习loss
  • 编写一个Chrome插件,网页选择文字后,右键出现菜单“search with bing”,选择菜单后用bing搜索文字
  • 【算法】分割回文串
  • lua 游戏架构 之 游戏 AI (三)ai_attack
  • 大数据之Oracle同步Doris数据不一致问题
  • visual studio 问题总结
  • go-错误码的最佳实践
  • Python面试题:使用Matplotlib和Seaborn进行数据可视化
  • 模拟实现c++中的vector模版
  • uniapp安卓通过绝对路径获取文件
  • Known框架实战演练——进销存业务单据
  • 解决npm依赖树冲突的方法以及npm ERR! code ERESOLVE错误的解决方案
  • Spring Boot + Spring Batch + Quartz 整合定时批量任务
  • C++STL简介(二)
  • 嵌入式高频面试题100道及参考答案(3万字长文)
  • python爬虫-事件触发机制
  • LeetCode-day27-3106. 满足距离约束且字典序最小的字符串