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

React 路由5版本的使用详解(基于Class类版本的使用react-router-dom@5)

React-Router-Dom 注意事项

1.整个SPA页面只能有一个路由器 BrowserRouter或者HashRouter
root.render(<React.StrictMode>{/* 只能有且只有一个路由器 */}<BrowserRouter>{/* SPA 单页面 */}<App></App></BrowserRouter></React.StrictMode>
)
2.路由Route 一般都被包裹在Switch组件里

1.route 有两个属性,一个是path 代表路径,一个是component代表组件

       <Switch><Route path="/Login" component={Login}></Route><Route path="/Home" component={Home}></Route><Redirect to="/Login"></Redirect></Switch>
3. UI中的路由跳转,一般用NavLink或者Link,有选中效果一般是NavLink(声明式导航)

1.NavLink和Link 都有 to 代表跳转的属性
2.NavLink 中的activeClassName 设置选中状态的类名

<li><NavLink to="/Home/About" activeClassName="active">关于我们</NavLink></li>
<li><NavLink to="/Home/News" activeClassName="active">新闻列表</NavLink>
</li>
4.Redirect 组件为路由重定向组件

1.属性from 从那个页面来,属性to重定向哪个页面去

5.React-Router-Dom 请求参数的三种模式

1.params 模式

1.路由链接携带参数
<Link to={`/Home/News/Detail/${item.id}/${item.title}/${item.content}`}>{item.id}={item.title}={item.content}
</Link>
2.注册路由(声明接收)
<Route component={Detail} path="/Home/News/Detail/:id/:title/:content"></Route>
3.接收参数
this.props.match.params

2.search参数模式

1.路由链接携带参数<Link to={`/Home/News/Detail?${item.id}&${item.title}&${item.content}`}>{item.id}={item.title}={item.content}</Link>2.注册路由(声明接收)<Route component={Detail} path="/Home/News/Detail"></Route>3.接收参数this.props.location.search参数模式?key1=value1&key2=value2&key3=value3模式安装querystring import qs from "querystring"const getResult= qs.parse(this.props.location.search.slice(1))//解析成一个对象

3.state参数

1.路由链接携带参数<Link to={{pathname: "/Home/News/Detail",state: {id: item.id,title: item.title,content: item.content,},}}>{item.id}={item.title}={item.content}</Link>
2.注册路由(声明接收)<Route component={Detail} path="/Home/News/Detail"></Route>
3.接收参数
this.props.location.state
//备注:刷新也可以保留住参数

######6. React-Router-Dom 编程式导航
1.push 跳转+携带params参数

 props.history.push(`/Home/News/Detail/${id}/${title}`);

2.push跳转+携带search参数

props.history.push(`/Home/News/Detail?id=${id}&title=${title}`);

3.push跳转+携带state参数

props.history.push(`/Home/News/Detail`, { id, title });

4.前进

this.props.history.goForward();

5.回退

this.props.history.goForward();

6.前进或者回退

this.props.history.go(-2); //回退到前2条的路由
在一般组件中使用编程式路由导航(非路由组件)
import {withRouter} from 'react-router-dom
class Header extends Component {// withRouter(Header)后,就可以在一般组件内部使用 this.props.history //...
}
export default withRouter(Header)

相关文章:

  • 【编译原理复习笔记】中间语言
  • RK 11.0 多屏模式下修改鼠标进入方式
  • Web3 知识体系架构图
  • Shell编程规范与变量
  • VMware安装Windows11
  • ISCC——AI
  • getters的使用
  • uniapp开发微信小程序问题集锦(1)
  • Hadoop概览以及编译hadoop说明
  • SpringBoot高级原理详解
  • 【MyBatis】MyBatis解析全局配置文件源码详解
  • 深度神经网络详解
  • 同旺科技 FLUKE ADPT 隔离版发布 ---- 3
  • pycharm配置python开发环境—miniconda+black+gitlab
  • 【sass插值语句 #{}简介以及使用方法】
  • flask接收请求并推入栈
  • Java多线程(4):使用线程池执行定时任务
  • Java精华积累:初学者都应该搞懂的问题
  • JWT究竟是什么呢?
  • NSTimer学习笔记
  • PV统计优化设计
  • session共享问题解决方案
  • Spring Boot快速入门(一):Hello Spring Boot
  • 成为一名优秀的Developer的书单
  • 如何设计一个微型分布式架构?
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 小而合理的前端理论:rscss和rsjs
  • 用简单代码看卷积组块发展
  • 再谈express与koa的对比
  • 走向全栈之MongoDB的使用
  • 大数据全解:定义、价值及挑战
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 如何用纯 CSS 创作一个货车 loader
  • ​ubuntu下安装kvm虚拟机
  • ​业务双活的数据切换思路设计(下)
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • $.ajax中的eval及dataType
  • $NOIp2018$劝退记
  • (3)llvm ir转换过程
  • (C++17) optional的使用
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Matlab)使用竞争神经网络实现数据聚类
  • (层次遍历)104. 二叉树的最大深度
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)计算机毕业设计ssm电影分享网站
  • (面试必看!)锁策略
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)Java算法:二分查找
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)Linux整合apache和tomcat构建Web服务器
  • .bat批处理(七):PC端从手机内复制文件到本地