11import React , { Component } from 'react' ;
2+ import { Flex , Box , Button } from 'rebass' ;
23import UserList from '../../components/UserList' ;
34import UserCreation from '../../components/UserCreation' ;
4- import { Flex , Box , Button } from 'rebass' ;
5+ import {
6+ getUsers ,
7+ addUser ,
8+ updateUser ,
9+ removeUser ,
10+ initFakeData
11+ } from '../../store/user' ;
512
613class Users extends Component {
714 state = {
815 users : [ ] ,
916 isAdding : false ,
1017 newUser : {
1118 name : '' ,
12- age : 10 ,
19+ age : 0 ,
1320 nickname : ''
1421 }
1522 } ;
1623
17- showNewUserForm = ( ) => {
24+ onShowNewUserForm = ( ) => {
1825 this . setState ( prevState => ( { isAdding : true } ) ) ;
1926 } ;
2027
21- closeNewUserForm = ( ) => {
28+ onCloseNewUserForm = ( ) => {
2229 this . setState ( prevState => ( { isAdding : false } ) ) ;
2330 } ;
2431
25- addUser = ( ) => {
26- console . warn ( 'addUser' ) ;
27- const { newUser } = this . state ;
28- this . setState (
29- prevState => ( {
30- users : [ ] . concat ( prevState . users , { ...newUser , id : Date . now ( ) } )
31- } ) ,
32- ( ) => {
33- this . setState ( {
34- newUser : {
35- name : '' ,
36- age : 10 ,
37- nickname : ''
38- }
39- } ) ;
40- }
41- ) ;
32+ onAddUser = ( ) => {
33+ const { newUser, users } = this . state ;
34+ console . warn ( 'onAddUser' , newUser ) ;
35+ addUser ( newUser , ( ) => {
36+ this . setState ( {
37+ users : getUsers ( ) ,
38+ newUser : {
39+ name : '' ,
40+ age : 0 ,
41+ nickname : ''
42+ }
43+ } ) ;
44+ } ) ;
45+ } ;
46+
47+ onUpdateUser = ( id , user ) => {
48+ console . warn ( 'onRemoveUser' , id ) ;
49+ updateUser ( id , user , ( ) => {
50+ this . setState ( {
51+ users : getUsers ( )
52+ } ) ;
53+ } ) ;
54+ } ;
55+
56+ onRemoveUser = id => {
57+ console . warn ( 'onRemoveUser' , id ) ;
58+ removeUser ( id , ( ) => {
59+ this . setState ( {
60+ users : getUsers ( )
61+ } ) ;
62+ } ) ;
4263 } ;
4364
4465 onChangeInput = ( field , value ) => {
@@ -51,7 +72,7 @@ class Users extends Component {
5172 hasChange = true ;
5273 break ;
5374 case 'age' :
54- updateData = Object . assign ( { } , newUser , { age : value } ) ;
75+ updateData = Object . assign ( { } , newUser , { age : Number ( value ) } ) ;
5576 hasChange = true ;
5677 break ;
5778 case 'nickname' :
@@ -68,25 +89,38 @@ class Users extends Component {
6889 }
6990 } ;
7091
92+ componentWillMount ( ) {
93+ console . warn ( 'componentWillMount' ) ;
94+ initFakeData ( ) ;
95+ this . setState ( {
96+ users : getUsers ( )
97+ } ) ;
98+ }
99+
71100 render ( ) {
72101 const { users, isAdding, newUser } = this . state ;
102+ console . warn ( 'Users render' , users , isAdding , newUser ) ;
73103 return (
74104 < Flex column align = "center" >
75105 < Box m = "auto" >
76- < UserList users = { users } />
106+ < UserList
107+ users = { users }
108+ onEdit = { this . onUpdateUser }
109+ onRemove = { this . onRemoveUser }
110+ />
77111 </ Box >
78112 { isAdding &&
79113 < Box m = "auto" >
80114 < UserCreation
81115 { ...newUser }
82- onSave = { this . addUser }
83- onCancel = { this . closeNewUserForm }
116+ onSave = { this . onAddUser }
117+ onCancel = { this . onCloseNewUserForm }
84118 onChange = { this . onChangeInput }
85119 />
86120 </ Box > }
87121 { ! isAdding &&
88122 < Box m = "auto" >
89- < Button onClick = { this . showNewUserForm } children = "Add" />
123+ < Button onClick = { this . onShowNewUserForm } children = "Add" />
90124 </ Box > }
91125 </ Flex >
92126 ) ;
0 commit comments