React-router4详解 看完你就懂了

本文详细介绍了React-Router4的各个方面,包括其组成部分、路由类型、路由渲染组件、动态路由、嵌套路由、重定向、导航方式(声明式与编程式)以及history对象的使用。同时,探讨了在React + React-Router实现的SPA项目中,如何处理浏览器刷新导致的404问题,并讲解了React-Router的生命周期变化。
摘要由CSDN通过智能技术生成

React-router4详解 看完你就懂了

React-router4(RR4)

组成部分:

react-router 核心

react-router-dom(基于浏览器环境的开发)

react-router-native(基于react-native环境的开发)

  • 安装 react-router-dom 或 react-router-native 时,都会自动将 react-router 作为依赖安装

常用组件:

路由类型组件:(历史路由和哈希路由)

<Browserouter/>
类似于vue中的history路由,利用了pushState和replaceState来构建路由。pushState和replaceState是HTML5新接口,可以改变网址(存在跨域限制)而不刷新页面,这个强大的特性后来用到了单页面应用如:vue-router,react-router-dom中。

  • 问题:在React + React-router实现的SPA(单页面应用)项目中,当我们路由模式采用browserHistory时,点击每个导航都可以显示正确的页面,一旦浏览器刷新,页面就显示Cannot GET(404)。
  • 分析:当刷新页面时,浏览器会向服务器请求example.com/list,服务器实际会去找根目录下list.html这个文件,发现找不到,因为实际上我们的服务器并没有这样的物理路径/文件或没有配置处理这个路由,所有内容都是通过React-Router去渲染React组件,自然会报404错误。这种情况我们可以通过配置Nginx或通过自建Node服务器来解决。
  • 解决:需要服务器支持(服务器配置)
  • 原理:其本质的原理就是利用服务端将任何请求都指向index.html,而在React应用中index.html又刚好通过React-Router配置了相应的路由,我们让服务器返回index.html,后面就交给前端路由来实现无刷新加载对应页面。
import  {BrowserRouter,Route,Switch} from 'react-router-dom'
<BrowserRouter>
<Switch>
	<Route path='/xxx' component={xxxx}>
 </Switch>
</BrowserRouter>

<HashRouter/>
类似于vue中的hash路由,使用window.location.hash和hashchange事件构建路由。

hash即URL中"#"字符后面的部分。

  • 使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置;
  • hash还有另一个特点,它的改变不会导致页面重新加载;
  • hash值浏览器是不会随请求发送到服务器端的;
  • 通过window.location.hash属性获取和设置hash值。

hashchange事件(IE8已支持该事件)

  • 当URL的片段标识符更改时,将触发hashchange事件(跟在#符号后面的URL部分,包括#符号)
  • hashchange事件触发时,事件对象会有hash改变前的URL(oldURL)和hash改变后的URL(newURL)两个属性。
import  {HashRouter,Route,Switch} from 'react-router-dom'
<HashRouter>
<Switch>
	<Route path='/xxx' component={xxxx}>
</Switch>
</HashRouter>

路由渲染组件:

<Route/>

是 React Router 中最重要的组件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值