您现在的位置是:网站首页> 编程资料编程资料
基于React路由跳转的几种方式_React_
2023-05-24
365人已围观
简介 基于React路由跳转的几种方式_React_
React路由跳转的几种方式
注意: 这里使用的react-router-dom是版本5以上,路由形式是history模式
react-router-dom文档,其中依赖包history的github地址
1. params形式
路由跳转后,参数会显示在地址栏

跳转的方法是使用
history.push({pathname: '/personal', search: 'test=22222'})其中search键对应的值就是拼接在地址栏的数据
import React from 'react' import { useHistory } from 'react-router-dom' export default ()=> { const history = useHistory() // 页面跳转方法 history.push({pathname: '/personal', search: 'test=22222'}) return 123 }接收的方法。数据都是存储在useLocation中的search获取
import React from 'react' import { useLocation } from 'react-router-dom' export default ()=> { const location = useLocation() // 页面跳转方法 console.log(location, 'props') return 123 }
2. 使用state的形式
页面刷新不会丢失数据,并且地址栏也看不到数据 跳转的方法是使用
history.push({pathname: '/personal', state: {test: 'dashboard'}})其中search键对应的值就是拼接在地址栏的数据
import React from 'react' import { useHistory } from 'react-router-dom' export default ()=> { const history = useHistory() // 页面跳转方法 history.push({pathname: '/personal', state: { test: 'dashboard' }}) return 123 }接收的方法。数据都是存储在useLocation中的search获取
import React from 'react' import { useLocation } from 'react-router-dom' export default ()=> { const location = useLocation() // 页面跳转方法 console.log(location, 'props') return 123 }
React路由跳转传参问题
使用Link传参
1.引入Link
import { Link } from “react-router-dom”2.Llink上携带传递的参数,携带的参数以对象形式
切换考试科目
2.1 接收参数(类组件)
componentDidMount() { console.log(this.props.location.state.XXX); //xxx指state对象中的键名 }2.2接收参数(函数式组件)
function Fast(props) { ... useEffect(() => { console.log(props.location.state.XXX);//xxx指state对象中的键名 }) }url传参
1.url带参传参
`
2.接收参数
// react-router-dom是通过“/:”去匹配url传递的参数 ,即id获取到上面的url传过来的88//页面接收参数 componentDidMount(){ console.log(this.props.match.params); }
隐式传参
3.1 state方法
页面传参
state方法传参:参数地址栏不显示,刷新地址栏,参数不丢失
接收参数
//页面接收参数 componentDidMount(){ console.log(this.props.history.location.state); }
3.2 query方法
页面传参
query方法传参:参数地址栏不显示,刷新地址栏,参数丢失
接收参数
//页面接收参数 componentDidMount(){ console.log(this.props.history.location.query); }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
- Angular项目过大时的合理拆分angular split_AngularJS_
- 4个值得收藏的Javascript技巧_javascript技巧_
- 在Vue2中注册全局组件的两种方法详解_vue.js_
- Vue3中setup方法的用法详解_vue.js_
- Vue如何获取两个时间点之间的所有间隔时间_vue.js_
- JS requestVideoFrameCallback() 简单案例_javascript技巧_
- element-ui实现表格边框的动态切换并防抖_vue.js_
- ECharts设置x轴刻度间隔的2种解决方法_javascript技巧_
- vue引用public目录下文件的方式详解_vue.js_
- vue element-ui动态横向统计表格的实现_vue.js_
