美文网首页
react-router 的实现原理

react-router 的实现原理

作者: 一瓣山河 | 来源:发表于2019-06-16 23:07 被阅读0次

理解react-router 的实现思路, 大概分为两部分:

  • 分析react-router 引入的依赖history
  • 分析react-router 是如何实现URL 与 UI 同步的

History

URL 与 UI 同步

从组件层面描述实现过程,react-router 中有几个重要的组件: Router, Route, RouterContext。

实现思路:

  • 内部维护一个RouterContext(依赖create-react-context), 提供两个类RouterContext.Provider、RouterContext.Consumer, 进行history, location, match, staticContext 的传递和更新
  • Router组件是通过ReactContext.Provider 实现的,给Router 注入history, location, match, staticContext 属性,Router注册了history.listen事件监测变化,location变化=> this.setState({location}) => RouterContext 变化
  • Route组件是通过ReactContext.Consumer 实现的, ReactContext.Consumer 内部有自己的state, 当RouterContext的value变化时,就会触发setState, 导致Route重新渲染

create-react-context

  • Provider与Consumer 通过Context 进行通信, Consumer中注册了update事件(Provider的childContext是通过EventEmitter实现的),当Provider的value值发生变化时,就会调用update事件,重新获取属性值,并setState() 重新渲染

参考:

相关文章

  • React Router-简单原理

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

  • react-router

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

  • react-router 实现原理

    参考: https://segmentfault.com/a/1190000007166839 http://zh...

  • react-router 的实现原理

    理解react-router 的实现思路, 大概分为两部分: 分析react-router 引入的依赖histor...

  • 2019-05-24

    1.router实现原理 一句话:实现URL与UI界面的同步。其中在react-router中,URL对应Loca...

  • react-router 路由的实现原理

    React Router 是一个基于 React 之上的强大路由库,它可以让你向应用中快速地添加视图和数据流,同时...

  • react-router 入门笔记

    React-router 笔记 官方文档 基本思路 react-router 通过react 组件的方式实现, 路...

  • react js实现路由跳转

    实现js跳转路由:https://reacttraining.com/react-router/web/examp...

  • vue-router和react-router实现原理

    首先说明下两种是针对不同框架库的路由库,两种库都有三种路由方式,分别是: hash模式(老版浏览器支持) Hist...

  • React路由

    React路由的实现需要安装 react-router 或 react-router-dom 。 react-ro...

网友评论

      本文标题:react-router 的实现原理

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