At its heart, React Router is a component.
@2.X
组件
Router
属性:
- history : 用来监听浏览器地址栏的变化,并将URL解析成一个地址对象,供 React Router 匹配
- hashHistory - 路由将通过URL的hash部分(
#
)切换 - browserHistory - 背后调用的是浏览器的History API (开发时dev-server添加参数 –history-api-fallback)
- hashHistory - 路由将通过URL的hash部分(
- routes : 可以传入子路由
Route
属性:
path : 指定路由的匹配规则 (可使用通配符)
:paramName
匹配URL的一个部分,直到遇到下一个/
、?
、#
为止。这个路径参数可以通过this.props.params.paramName
取出。1
2
3<Route path="/hello/:name">
// 匹配 /hello/michael
// 匹配 /hello/ryan
()
表示URL的这个部分是可选的。1
2
3
4<Route path="/hello(/:name)">
// 匹配 /hello
// 匹配 /hello/michael
// 匹配 /hello/ryan
*
匹配任意字符,直到模式里面的下一个字符为止。匹配方式是非贪婪模式。1
2
3
4
5
6
7
8<Route path="/files/*.*">
// 匹配 /files/hello.jpg
// 匹配 /files/hello.html
<Route path="/files/*">
// 匹配 /files/
// 匹配 /files/a
// 匹配 /files/a/b
**
匹配任意字符,直到下一个/
、?
、#
为止。匹配方式是贪婪模式。1
2
3<Route path="/**/*.jpg">
// 匹配 /files/hello.jpg
// 匹配 /files/path/to/file.jpg
URL的查询字符串
/foo?bar=baz
,可以用this.props.location.query.bar
获取。
component : 匹配到路由是加载的组件
onEnter 和 onLeave : 用户进入或离开该路由时触发的钩子
IndexRoute
- 显式指定
Home
是根路由的子组件,即指定默认情况下加载的子组件 IndexRoute
组件没有路径参数path
。
Redirect
<Redirect>
组件用于路由的跳转,即用户访问一个路由,会自动跳转到另一个路由。
IndexRedirect
IndexRedirect
组件用于访问根路由的时候,将用户重定向到某个子组件。
Link
Link
组件用于取代<a>
元素,生成一个链接,允许用户点击后跳转到另一个路由。它基本上就是<a>
元素的React 版本,可以接收Router
的状态。
IndexLink
如果链接到根路由/
,不要使用Link
组件,而要使用IndexLink
组件,实际上,IndexLink
就是对Link
组件的onlyActiveOnIndex
属性的包装。。
1 | const routes = <Route path="/" component={App}> |
#####
基本使用
1 | import { Router, Route, hashHistory, Link } from 'react-router' |