简单谈谈简单谈谈React中的路由系统中的路由系统
React中的路由系统中的路由系统
提起路由,首先想到的就是 ASPNET MVC 里面的路由系统–通过事先定义一组路由规则,程序运行时就能自动根据我们输入
的URL来返回相对应的页面。前端中的路由与之类似,前端中的路由是根据你定义的路由规则来渲染不同的页面/组件,同时
也会更新地址栏的URL。本篇文章要介绍的是React中经常使用到的路由,react-router主要使用HTML5的history API来同步你
的UI和URL。
react-router的最新版本是v4.1.1,由于4.0版本和之间的版本API变化较大,所以本篇文章的内容并不能应用到之前的版本中。
要注意 react-router 有 react-router-dom 和 react-router-native 的区别。前者是用于开发WEB应用的,而后者适用于移动APP
的,本文所介绍的是react-router-dom。
react-router 中的三大组件中的三大组件
react-router中的组件就是react中的组件,只不过它们被添加了一些特殊的逻辑而已。
Router Router相当于一个容器,不会被渲染出来。你的其他组件都要放在Router中才能使用到react-router的功能。根据功能
的不同,Router还分为BrowserRouter,MemoryRouter等。
pnk pnk被渲染称一个a标签,通常以声明式的方式被定义在应用程序中。
Route Route包含一个path,并指明了在path与URL匹配时要渲染的组件。
Router
如果说我们的应用程序是一座小城的话,那么Route就是一座座带有门牌号的建筑物,而pnk就代表了到某个建筑物的路线。
有了路线和目的地,那么就缺一位老司机了,没错Router就是这个老司机。
先来说一说BrowserRouter。BrowserRouter主要使用在浏览器中,也就是WEB应用中(废话,看名字就知道了)。它利用
HTML5 的history API来同步URL和UI的变化。当我们点击了程序中的一个链接之后,BrowserRouter就会找出与这个URL匹配
的Route,并将他们渲染出来。 既然BrowserRouter是用来管理我们的组件的,那么它当然要被放在最顶级的位置,而我们的
应用程序的组件就作为它的一个子组件而存在。
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
ReactDOM.render(
<BrowserRouter>
<App/>
</BrowserRouter>,
document.body);
有时候我们的应用只是整个系统中的一个模块,比如一个使用了ASPNET MVC中的area的后台管理模块,应用中的URL总是
以 http://localhost/admin/ 开头。这种情况下我们总不能每次定义pnk和Route的时候都带上admin吧?react-router已经考虑到
了这种情况,所以为我们提供了一个basename属性。为BrowserRouter设置了basename之后,pnk中就可以省略掉admin
了,而最后渲染出来的URL又会自动带上admin。
评论0
最新资源