@@ -4,45 +4,30 @@ var Router = require('../../modules/main');
4
4
var Route = Router . Route ;
5
5
var Link = Router . Link ;
6
6
7
- // Taco store!
8
-
9
- var _tacos = [
10
- { name : 'duck confit' } ,
11
- { name : 'carne asada' } ,
12
- { name : 'shrimp' }
13
- ] ;
14
-
15
- var tacoStore = {
16
- getAll : function ( ) {
17
- return _tacos ;
18
- } ,
19
- addTaco : function ( taco ) {
20
- _tacos . push ( taco ) ;
21
- this . onChange ( ) ;
22
- } ,
23
- onChange : function ( ) { }
24
- } ;
25
-
26
- // Components
27
-
28
7
var App = React . createClass ( {
29
8
getInitialState : function ( ) {
30
9
return {
31
- tacos : tacoStore . getAll ( )
10
+ tacos : [
11
+ { name : 'duck confit' } ,
12
+ { name : 'carne asada' } ,
13
+ { name : 'shrimp' }
14
+ ]
32
15
} ;
33
16
} ,
34
17
35
18
addTaco : function ( ) {
36
19
var name = prompt ( 'taco name?' ) ;
37
- tacoStore . addTaco ( { name : name } ) ;
38
- } ,
39
-
40
- componentWillMount : function ( ) {
41
- tacoStore . onChange = this . updateTacos ;
20
+ this . setState ( {
21
+ tacos : this . state . tacos . concat ( { name : name } )
22
+ } ) ;
42
23
} ,
43
24
44
- updateTacos : function ( ) {
45
- this . setState ( { tacos : tacoStore . getAll ( ) } ) ;
25
+ handleRemoveTaco : function ( removedTaco ) {
26
+ var tacos = this . state . tacos . filter ( function ( taco ) {
27
+ return taco . name != removedTaco ;
28
+ } ) ;
29
+ this . setState ( { tacos : tacos } ) ;
30
+ Router . transitionTo ( '/' ) ;
46
31
} ,
47
32
48
33
render : function ( ) {
@@ -56,18 +41,23 @@ var App = React.createClass({
56
41
{ links }
57
42
</ ul >
58
43
< div className = "Detail" >
59
- { this . props . activeRoute ( ) }
44
+ { this . props . activeRoute ( { onRemoveTaco : this . handleRemoveTaco } ) }
60
45
</ div >
61
46
</ div >
62
47
) ;
63
48
}
64
49
} ) ;
65
50
66
51
var Taco = React . createClass ( {
52
+ remove : function ( ) {
53
+ this . props . onRemoveTaco ( this . props . params . name ) ;
54
+ } ,
55
+
67
56
render : function ( ) {
68
57
return (
69
58
< div className = "Taco" >
70
59
< h1 > { this . props . params . name } </ h1 >
60
+ < button onClick = { this . remove } > remove</ button >
71
61
</ div >
72
62
) ;
73
63
}
0 commit comments