美文网首页
前端知识 | React-Router路由系统

前端知识 | React-Router路由系统

作者: SEATELL海说软件 | 来源:发表于2017-12-15 09:26 被阅读0次

目前在各种web应用开发中,路由系统一直都是项目中不可或缺的部分。然而在框架不断涌现的时代,路由系统也相继而出,例如Backbone。在我们使用react框架开发web应用时,路由系统我们就免不了使用react-router。

如果你以前并没有接触过 react-router,相反只是用过刚才提到的 Backbone 的路由或者是 director,你一定会对这种声明式的写法感到惊讶。不过细想这也是情理之中,毕竟是只服务于React 类框架,引入它的特性也是无可厚非。仔细看一下,你会发现:

Router 与Route 一样都是 react 组件,它的 history 对象是整个路由系统的核心,它暴露了很多属性和方法在路由系统中使用;

Route 的path 属性表示路由组件所对应的路径,可以是绝对或相对路径,相对路径可继承;

Redirect 是一个重定向组件,有 from 和 to 两个属性;

Route 的onEnter 钩子将用于在渲染对象的组件前做拦截操作,比如验证权限;

在Route 中,可以使用 component 指定单个组件,或者通过 components 指定多个组件集合;

param 通过 /:param 的方式传递,这种写法与 express 以及ruby on rails 保持一致,符合 RestFul 规范;

每一个路由(Route)中声明的组件(比如 SignIn)在渲染之前都会被传入一些的props,主要包括:

history 对象,它提供了很多有用的方法可以在路由系统中使用,比如刚刚用到的history.replaceState,用于替换当前的 URL,并且会将被替换的 URL 在浏览器历史中删除。函数的第一个参数是 state 对象,第二个是路径;

location 对象,它可以简单的认为是 URL 的对象形式表示,这里要提的是 location.state,这里 state 的含义与 HTML5 history.pushState API 中的 state 对象一样。每个 URL 都会对应一个 state 对象,你可以在对象里存储数据,但这个数据却不会出现在 URL 中。实际上,数据被存在了sessionStorage 中;

事实上,刚才提到的两个对象同时存在于路由组件的 context 中,你还可以通过 React 的 context API 在组件的子级组件中获取到这两个对象。

PS:本文所讲解的react-router是2.x ~ 3.x版本,如目前最新的4.x版本不兼容,但是由于目前官方是在同时维护几个版本,所以在实际项目中还是可以用的。

-END-

相关文章

  • React Router-简单原理

    以下内容主要参考自 深入理解 react-router 路由系统react-router的实现原理前端路由实现与 ...

  • 前端知识 | React-Router路由系统

    目前在各种web应用开发中,路由系统一直都是项目中不可或缺的部分。然而在框架不断涌现的时代,路由系统也相继而出,例...

  • React 刷新404问题

    react-router 因为前端路由更容易确定问题,更方便分析,而且对于react-router更熟悉,所以首先...

  • react-router4

    一、关于react-router react-router是一些封装好的组件用于前端路由,当我们点击的时候会出现一...

  • React路由

    react-router React路由,让父组件动态去挂载不同的子组件,以目前最新的4.x为例; 前端路由的实现...

  • 07-06-React-Router的单页应用

    课程目标 理解前端路由的作用; 掌握 React-Router 各 API 使用细节; 可根据项目需求,在 Rea...

  • react-router

    [react-router]路由原理 参考链接 [react-router]hashHistory和browser...

  • React-router路由系统

    前端路由 在web应用开发中,路由系统是不可或缺的一部分。路由简单来说就是当url发生变化时,web界面也会随之改...

  • React-Router 和 React-Router-dom

    React-Router 和 React-Router-dom 的区别 react-router 提供了路由核心a...

  • 前端学习笔记四十一-移动APP(5)react-router和A

    一、react-router 要使用 react-router路由模块,先安装依赖包yarn add react-...

网友评论

      本文标题:前端知识 | React-Router路由系统

      本文链接:https://www.haomeiwen.com/subject/dtsrwxtx.html