react路由

首先我们先安装 react-router-dom (react4.0的路由)

       yarn add  react-router-dom

      cnpm i  react-router-dom -s

如何使用?

在react中路由配置项都是组件

凡是被路由包裹的组件都可以使用路由

BrowserRouter    HashRouter

这两个组件是路由配置项的父级所有关于路由的配置项都必须在这2个组件下面

BrowserRouter as Router 

HashRouter  as Router   可以修改它的名称

Route:路由的配置项

当路径匹配成功以后渲染对应的组件

属性:

     path:需要匹配的路径

     component:需要渲染的对应组件名称

     render:需要渲染的对应组件名称

component与render的区别?

 render:值是一个函数 函数会返回一个组件/标签  

                渲染组件的时候可以进行组件传参

component:值是一个组件名称

                      直接通过this.props就可以拿到history、loaction  match三个值

如下图所示:

路由跳转的方式:

Link:

        属性

             to:跳转到那个路径

             activeclassName:更改默认选中的类名的名称

             activeStyle:添加选中后的行间样式

如图所示:

     NavLink:

         

Link与NavLink的区别:

Link不会添加类名而NavLink会自动添加一个类名

NavLink被选中状态

switch

 渲染组件的时候只会渲染一个组件

一般会配合exact进行使用

exact这个属性可以用在route NaveLink  Link身上

作用:完全匹配路径

如图所示:

注意:exact只能放在最前面,因为switch是从上往下匹配的,如果匹配成功就不会匹配了

Redirect:

作用:重定向 一般放在路由的配置项的最后面

如图所示:

路由传值:

1、动态路由传值

在父组件Home中:

在app.js中

在子组件中homedetail中

总结:

       在定义路由路径的时候通过/:来定义传递参数的属性

       接受:在接受的时候通过this.props.match.params进行接受

2、query传值

在父组件Home中

在子组件中

首先引入url模块

总结:在路由跳转的时候通过?做数据的拼接

            接受 通过引入node  url模块 做数据的解析

            url.parse(this.props.location.search,true).query

3、属性传值(建议最好不要使用这种方法)因为只要一刷新就找不到数据了,而且找错误可以找一天,所以劝大家不要使用这种方法

解决方法:保存在session.location

在父组件中

   

在子组件中

 4、编程式导航:

  this.props.history.goback()

  this.props.history.goForward()

  this.props.history.go()

  this.props.history.push()

  this.props.history.replace()

如图所示:这里就不给大家一一列举了

编程式导航传参:

总结一波:history:是用来做编程式导航 、loaction:是用来做query传值、match:是用来做动态路由。

如有错误,希望大牛们多多指点!!!

原文地址:https://www.cnblogs.com/ray123/p/10912276.html