React路由详解

Posted 老张在线敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React路由详解相关的知识,希望对你有一定的参考价值。

React-Router

route是路由
router是路由器

路由引入包

react-router路由是用来给移动端的react-native使用的插件库

react-router-dom是专门给web开发使用的路由插件库

路由工作原理

用户点击nav后开始检测对应路径,检测到之后就直接更换路径跳转另一个路径,检测不到则重定向到空白页或者自定义404页面
每一个路径就代表着一个组件

每个路由都是由key:value组合组成的

路由路径就是key,value是组件的页面内容

history属性(原生Bom浏览器对象中的属性)

路由的history中的push方法切换是根据栈得原理进行的(先进后出)

replace方法是替换掉当前路由的路径及历史记录

hash值(操作锚点,不常用)

路由组件跟一般组件的区别

1.写法不同:

一般组件:<List/>
路由组件:<Route path="/list" component={List}>

2.接收到的props不同:

一般组件:写组件标签的时候传递了什么就能接收到什么

路由组件:接收到三个固定的属性:history,location,match

//删减版
//能用到的属性如下
history:
	go: ƒ go(n)
	goBack: ƒ goBack()
	goForward: ƒ goForward()
	push: ƒ push(path, state)
	replace: ƒ replace(path, state)
location:
	pathname: "/test"
	search: ""
	state: undefined
match:
	params: {}
	path: "/test"
	url: "/test"
	staticContext: undefined

属性及标签

path属性

Route组件的path属性指定路由的匹配规则

Redirect 组件

redirect输入一个不存在的地址时候返回设置的默认页

exact属性

精准匹配,有俩个值,true或false,true为严格匹配,false为正常匹配

NavLink标签跳转

NavLink使用时会产生一个active的类名可以用于进行高亮或当前样式的显示

Link则跟html中的a标签跳转功能类似,相当于react中的a标签href跳转

switch标签的作用:防止多个路由组件的情况下匹配多次,用switch包裹路由组件匹配到了就不会继续往下匹配

路由跳转方式

声明式跳转

直接通过NavLink上面的to属性指定地址进行跳转

编程式跳转
使用的时候一定要主要当前组件必须是有路由状态的(在路由配置中当前组件有挂载),没有路由状态啧不能使用js进行跳转

this.props.history.replace("地址")


路由传参

params传参【常用】

  // this.props.match.params.id 接收参数
 //在路由配置中以/:的方式评接参数标识id

state传参
this.props.location.state接收参数

 <div>{  pathname: `/webRouter/${id}`,state: { id: 3 }}</div> 

query传参

1、在router文件中配置为正常配置 <Route path="/Child03" component={Child03}/>
2、在跳转时 路径为一个对象{} 其中 pathname为路径 query为一个对象 对象里是携带的参数
3、使用this.props.location.query接收参数

whithRouter的作用和场景

首先他可以让当前的一个没有路由状态的组件拥有路由状态

以上是关于React路由详解的主要内容,如果未能解决你的问题,请参考以下文章

React路由详解

React路由的详解

React路由的详解

React路由的详解

React路由的详解

React路由超详解...