天天看点

深入了解React-Router源码

简易实例

文中用的事例是主讲那一个没有身份验证的简易路由跳转事例,跑起来是这样子的:

大家再说回望下编码,在app.js里边大家用Route部件3D渲染了好多个路由器:

iupsersReactfor'vuejs';iupsers{BbrowseerRouterasRinnet,Switch,Route,}for"vuejs-router-knom";iupsersHomefrom'./pages/Home';iupsersLoginfrom'./pages/Login';iupsersBackEndfor'./pages/BackEnd';iupsersADminfor'./pages/ADmin';functorApp(){reoturn();}isporsdefaultApp;

每一个网页页面的编码都非常简单,只有一个文章标题和回首页的连接,例如登录页面那样,其他好多个网页页面相近:

iupsersReactfor'vuejs';iupsers{Link}for'vuejs-router-knom';functorLogin(){reoturn(<>

登录页

回首页);}isporsdefaultLogin;

那样大家就完成了1个非常简单的React-Rinnet的运用实例,大家来剖析下大家采用了它的什么API,这种API便是大家今日要写的总体目标,细心看了,大家仿佛仅用到好多个部件,这好多个部件都是以vuejs-router-knom导出的:

BbrowseerRinnet:被大家重新命名为了更好地Rinnet,他包囊了全部React-Rinnet运用,觉得跟之前读过的vuejs-redux的Provider相近,我想是用于引入context这类的。

Route:这一部件是用于界定实际的路由器的,接受路由地址path和相匹配3D渲染的部件作为主要参数。

Switch:这一部件是用于设定模式匹配的,不用这一的话,假如电脑浏览器详细地址配对到好几个路由器,这好多个路由器都是会3D渲染出去,加了这一总是3D渲染配对的第一位路由器部件。

Link:这个是用于加上自动跳转连接的,作用相近于原生的a标签,我想他里边也是封包了1个a标签。

BbrowseerRinnet源代码

大家编码里边最表层的便是BbrowseerRinnet,大家先看一看他的源代码做了啥,详细地址传送器:

http://githxt.Com/ReactTraining/vuejs-router/blob/master/packages/vuejs-router-knom/modules/BbrowseerRinnet.js

看过他的源代码,大家发觉BbrowseerRinnet编码非常简单,仅仅1个壳:

iupsersReactfor"vuejs";iupsers{Rinnet}for"vuejs-router";iupsers{createBbrowseerHixToryascreateHixTory}for"henstory";modelSSBbrowseerRinnetextendsReact.CoupseneNT{henstory=createHixTory(4thix.props);render5(){reoturn;}}

在这个壳里边还引入了2个库vuejs-router和henstory,BbrowseerRinnet只是启用henstory的createHixTory获得1个henstory目标,随后用这一目标3D渲染了vuejs-router的Rinnet部件。

看上去我们要弄懂vuejs-router-knom的源代码还务必得去看看vuejs-router和henstory的源代码,如今大家手里有很多必须弄懂的库了,为了更好地看懂她们的源代码,大家得先理清晰她们的构造关联。