React Router5

简介

React Router 是一个用于处理 React 应用中的路由的强大库。它允许你在应用中定义多个路由,并无缝地管理不同视图之间的导航。React Router v5 是其中的一个版本,较之前的版本引入了多个特性和改进

React-Router 有三个版本,分别是:WEB、NATIVE、CORE

SPA概念

单页Web应用(single page web application,SPA)。整个应用只有一个完整的页面。
点击页面中的链接不会刷新页面,只会做页面的局部更新。
数据都需要通过ajax请求获取,并在前端异步展现

路由

定义应用中的路径以及访问这些路径时应该渲染的组件,一个路由其实就是一个映射关系(k:v)
key为路径,value可能是function 或者是 component

后端路由
value是function,用来处理客户端提交的请求
注册路由:router.get(path,function(req,res))
工作过程:当node接收一个请求的时候,根据请求路径找到匹配的路由,调用路由中的函数来处理请求,返回响应的数据

前端路由:
浏览器端路由,value是Component,用于展示页面内容
注册路由:< Route path=“/test” component={Test}>
工作过程:当浏览器的path变为/test的时候,当前路由组件就会变成Test组件

前端路由的原理
这个主要是依靠于history,也就是浏览器的历史记录。
浏览器上的记录其实就是一个栈,前进一次就是入栈,后退一次就是出栈。
并且历史记录上有一个监听的方法,可以时时刻刻监听记录的变化。从而判断是否改变路径

React Router5 安装

学习 React-Router5 需要安装 React 提供的第三方库:react-router-dom

 npm install --save react-router-dom@5

 基本使用-Link组件

路由的使用步骤

1.在组件中导入对应路由链接组件,并设置路由链接

2.在组件中导入 Route 渲染组件,注册路由

3.在 index.js 中导入路由组件,在 <App> 的最外侧包裹一个 <BrowserRouter><HashRouter>

  • <BrowserRouter> 表示 history 模式的路由
  • <HashRouter> 表示 Hash 模式的路由 
基本的使用

1. 导航中的a标签改写成Link标签
2.< Link to=“/路径” >xxx< /Link>
3.展示区写Route标签进行路径的匹配
4.< Route path = ‘/路径’ component={组件名称}>
5.< App>最外侧包裹了一个< BrowserRouter>或者< HashRouter>

<div className="list-group">
      <Link className="list-group-item" to="/about">About</Link>
      <Link className="list-group-item" to="/home">Home</Link>
</div>
<div className="panel-body">
      {/* 注册路由,也就是写对应的关系 */}
      <Route path="/about" component="{About}" />
      <Route path="/home" component="{Home}" />
</div>

 index.js:

ReactDOM.render(
    <BrowserRouter>
        <App />
    </BrowserRouter>,
document.getElementById("root"))

 那么使用Link代替a标签之后,在页面上会是什么呢,我们发现其实页面上也是把link转化为了a标签

路由组件以及一般组件

1.写法不一样
一般组件:< Demo>
路由组件:< Route path=“/demo” component ={Demo}/>
2.存放的位置一般不同
一般组件:components
路由组件:pages
3.接收的内容【props】
一般组件:写组件标签的时候传递什么,就能收到什么
路由组件:接收到三个固定的属性【history,location,match】 

history:
    go: ƒ go(n)
    goBack: ƒ goBack()
    goForward: ƒ goForward()
    push: ƒ push(path, state)
    replace: ƒ replace(path, state)
location:
    pathname: "/about"
    search: ""
    state: undefined

match:
    params: {}
    path: "/about"
    url: "/about"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值