React中的路由

可以使用路由用来匹配不同的模块来响应用户的请求,有些公司的项目代码中依旧使用的是老版的路由,所以说先说3.0版本再说4.0版本,最新的5.0版本和4.0版本差别并不大。

路由Router3.X的安装和使用。

命令行:

npm install --save react-router@3.x

引入路由和书写:

hashHistory是用来保存历史的,可以在页面顶端前进后退

import { Router,Route,hashHistory } from "react-router";

<Router history={ hashHistory }>

<Route path="/home" component={ Home }></Route>

<Route path="/mine" component={ Mine }></Route>

</Router>

路由的跳转和连接(显示在页面的导航(Link也相当于一个a标签)):

import { Link } from "react-router"

<ul>

<li>

<Link to="/home">主页面</Link>

</li>

<li>

<Link to="/mine">我的</Link>

</li>

</ul>

在对应的路由里嵌套结构

<Route path="/mine" component={ Mine }>

<Route path="/mine/demo" component={ Demo }></Route>

<Route path="/mine/center" component={ Center }></Route>

</Route>

如果想要显示子级路由需要写:

{ this.props.children }

多页面跳转单一页面携带参数

1.主页面创建key

<Route path="/detail/:goodsId" component={ Detail }></Route>

2.传递参数值

<Link to="/detail/1001">内容1</Link>
动态参数拼接:
<Link to={`/detail/${element.id}`}>{ element.name }</Link>

3.单一页面组件读取参数

{ this.props.params.goodsId }

路由Router4.X的安装和使用。

安装命令行:

npm install --save react-router react-router-dom

引入的内容和3.x有点区别:

import { Route,BrowserRouter,Switch } from "react-router-dom"

<BrowserRouter>

<Switch>

{ exact:精准匹配 “/”代表根目录(首页) “”如果报错会调用该页面,必须写在最后}

<Route exact path="/" component={ Home }></Route>

<Route path="/other" component={ Other }></Route>

<Route path="*" component={ NotFound }></Route>

</Switch>

</BrowserRouter>

BrowserHistory和HashHistory的区别(网址上显示的不同)

HashHistory:#/

BrowserHistory:/

路由嵌套:

import Other from "../Other";

使用引入的父级路由标签包裹:

<Other path="/other">

<Switch>

<Route path="/other/java" component={ Java }></Route>

<Route path="/other/web" component={ Web }></Route>

</Switch>

</Other>

单一页面组件读取参数(与3.x不同的是多了一个 match):

{this.props.match.params.id}

路由高亮(将Link标签替换为NavLink)

原标签<Link to="/home">首页</Link>

<NavLink to="/home">首页</NavLink>

重定向(当用户点击进入主页面时,只需要进入(http://localhost:3000/)就会自动跳转到(http://localhost:3000/home)(home为主页面))

render={() => (<Redirect to="/home" />)}

使用:

<Route exact path="/" render={() => (<Redirect to="/home" />)}></Route>

 

如果您看到有地方写的不对,请指出,必定虚心接受,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值