1
- /** @jsx React.DOM */
2
1
var React = require ( 'react' ) ;
3
2
var Router = require ( 'react-router' ) ;
4
3
var whenKeys = require ( 'when/keys' ) ;
5
4
var EventEmitter = require ( 'events' ) . EventEmitter ;
6
- var { Route, DefaultRoute, NotFoundRoute, ActiveRouteHandler } = Router ;
7
- var { Link, Navigation, ActiveState } = Router ;
5
+ var { Route, DefaultRoute, RouteHandler, Link } = Router ;
8
6
9
7
var API = 'http://addressbook-api.herokuapp.com' ;
10
8
var loadingEvents = new EventEmitter ( ) ;
@@ -33,7 +31,6 @@ function getJSON(url) {
33
31
}
34
32
getJSON . _cache = { } ;
35
33
36
-
37
34
var App = React . createClass ( {
38
35
39
36
statics : {
@@ -54,13 +51,13 @@ var App = React.createClass({
54
51
// otherwise its fast enough to just wait for the
55
52
// data to load
56
53
timer = setTimeout ( ( ) => {
57
- this . setState ( { loading : true } ) ;
54
+ this . setState ( { loading : true } ) ;
58
55
} , 300 ) ;
59
56
} ) ;
60
57
61
58
loadingEvents . on ( 'loadEnd' , ( ) => {
62
59
clearTimeout ( timer ) ;
63
- this . setState ( { loading : false } ) ;
60
+ this . setState ( { loading : false } ) ;
64
61
} ) ;
65
62
} ,
66
63
@@ -80,7 +77,7 @@ var App = React.createClass({
80
77
< ul >
81
78
{ this . renderContacts ( ) }
82
79
</ ul >
83
- < ActiveRouteHandler { ...this . props } />
80
+ < RouteHandler { ...this . props } />
84
81
</ div >
85
82
) ;
86
83
}
@@ -115,32 +112,27 @@ var Index = React.createClass({
115
112
}
116
113
} ) ;
117
114
118
-
119
-
120
115
var routes = (
121
116
< Route name = "contacts" path = "/" handler = { App } >
122
117
< DefaultRoute handler = { Index } />
123
118
< Route name = "contact" path = "contact/:id" handler = { Contact } />
124
119
</ Route >
125
120
) ;
126
121
127
- function fetchData ( matches , params ) {
128
- return whenKeys . all ( matches . filter ( ( match ) => {
129
- return match . route . handler . fetchData ;
130
- } ) . reduce ( ( data , match ) => {
131
- var { name, handler} = match . route ;
132
- data [ name ] = handler . fetchData ( params ) ;
122
+ function fetchData ( routes , params ) {
123
+ return whenKeys . all ( routes . filter ( ( route ) => {
124
+ return route . handler . fetchData ;
125
+ } ) . reduce ( ( data , route ) => {
126
+ data [ route . name ] = route . handler . fetchData ( params ) ;
133
127
return data ;
134
128
} , { } ) ) ;
135
129
}
136
130
137
- function render ( Handler , state ) {
131
+ Router . run ( routes , function ( Handler , state ) {
138
132
loadingEvents . emit ( 'loadStart' ) ;
139
- fetchData ( state . matches , state . activeParams ) . then ( ( data ) => {
133
+
134
+ fetchData ( state . routes , state . params ) . then ( ( data ) => {
140
135
loadingEvents . emit ( 'loadEnd' ) ;
141
- React . render ( < Handler data = { data } /> , document . getElementById ( 'example' ) ) ;
136
+ React . render ( < Handler data = { data } /> , document . getElementById ( 'example' ) ) ;
142
137
} ) ;
143
- }
144
-
145
- Router . run ( routes , render ) ;
146
-
138
+ } ) ;
0 commit comments